【问题标题】:Point arrow to location (geolocation)将箭头指向位置(地理位置)
【发布时间】:2013-05-06 10:18:10
【问题描述】:

我想在移动网站上制作一种指南针。 这就是我所拥有的:

这就是我想要的:

我将当前位置保存在本地存储中。然后例如再走1公里,我检查我的位置并检查两点之间的距离。

现在我想要一个从当前位置指向本地存储位置的箭头。 我使用 javascript 库“compass.js”检查手机的度数。

但是现在,我怎样才能使箭头指向该位置?

【问题讨论】:

  • 所以你已经有了一个角度,只是想用那个角度显示一个箭头?
  • 我还没有箭头。这只是一个图像。我想制作一个箭头并将其指向该位置的方向。
  • 你能帮我计算一下天使吗?分享你用来计算两点夹角的js代码

标签: javascript jquery geolocation compass-geolocation


【解决方案1】:

看起来您正试图以给定的旋转方向绘制图像(箭头)。好吧,如果我们假设一个现代浏览器(现在对手机来说不是一个坏假设),那很容易。只需在您的页面上添加一个 img 并对其应用 CSS 转换即可。

有关 CSS 旋转的更多信息,请参阅此网站:http://www.cssrotate.com/(哇,有人为此制作了整个网站……)

现在您还想通过 JavaScript 应用旋转,因此您需要动态更改 CSS 属性。由于它仍然很新并且有供应商前缀,这有点棘手,但不是太难。这个网站有一个很好的方法来处理它:http://www.javascriptkit.com/javatutors/setcss3properties.shtml

把它放在一起,你可以有这个:

<img id="myarrow" src="myarrow.png" />
(blah)
<script>
// from http://www.javascriptkit.com/javatutors/setcss3properties.shtml
function getsupportedprop(proparray){
    var root=document.documentElement;
    for (var i=0; i<proparray.length; i++){
        if (proparray[i] in root.style){
            return proparray[i];
        }
    }
    return false;
}
var cssTransform;
function setArrowRotation(x){
    if(cssTransform===undefined){
        cssTransform=getsupportedprop(['transform','webkitTransform','MozTransform','OTransform','msTransform']);
    }
    if(cssTransform){
        document.getElementById('myarrow').style[cssTransform]='rotate('+x+'deg)';
    }
}
</script>

现在,只要您需要重定向箭头,只需致电 setArrowRotation

这是一个不断旋转箭头的小提琴:http://jsfiddle.net/y2sxE/

【讨论】:

  • 我怎样才能将它旋转到我之前保存的位置的方向?
  • 您可以使用任何您喜欢的值致电setArrowRotation。只需加载您的值并调用该函数。
  • 如果你有 2 个位置,你可以使用atan2 得到一个角度,然后从 Compass.js 给出的角度中减去这个角度。您需要像我的小提琴一样将所有这些放在一个间隔中,以便它随着设备的旋转而更新。此外,您可能需要添加 0/90/180/270 以使箭头图像正确排列(您需要哪一个取决于图像以及 Compass.js 的工作方式,因此更容易试试看)
猜你喜欢
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2013-05-12
相关资源
最近更新 更多