我创建了一个小的地理定位手表:
navigator.geolocation.watchPosition(
this.updateLocation.bind(this),
this.errorLocation.bind(this),
{enableHighAccuracy: true}
);
其中updateLocation
定义为:
private updateLocation(position: Position) {
this.myLatitude = position.coords.latitude;
this.myLongitude = position.coords.longitude;
this.myAccuracy = position.coords.accuracy;
if (position.coords.heading != null) {
this.myHeading = Game.toRad(position.coords.heading);
}
this.GPSWorking = true;
}
现在这段代码正在“工作”,我看到它更新GPS数据,精度和预期的一样。- 只有一个“但是”标题总是“空”。我可以期待这一点时,在pc上,甚至当没有启用高精度。
然而,在所有的设置,我尝试了它给出“空”。
我知道我移动的有一个工作陀螺仪:实际上我可以在原生Android应用程序中获得标题。- 我还注意到谷歌Map(网站,通过Chrome)能够确定我的航向;所以我一定做错了什么
一个小提琴,让人们可以测试它:https://jsfiddle.net/8p5rngtk/15/-我只对航向感兴趣(尽管剩下的是显示gps在设备上工作)。
编辑:
它“只是”开始像预期的那样工作。(非常好),我仍然注意到的唯一一件事是,更新频率比我写它作为本地应用程序时慢得多-慢得我不能依赖它为我的应用程序。
无论如何,如果有人知道为什么这“有时”有效,它可能会帮助未来的问题。
2条答案
按热度按时间ffx8fchx1#
我所知道的所有浏览器目前都不支持heading属性。就像海拔一样。
Generic Sensors API可能会在未来提供一些帮助。(注:他们永远不会实施拟议的地理定位“传感器”)
我希望看到高度和航向得到支持,但只要想想需要过滤的事件越来越多:-(
cgfeq70w2#
我把这个留在这里是因为我在同样的问题上浪费了一整天。你正在寻找错误的API来获取手机的方向。地理位置中的航向属性不是罗盘方向,而是基于电话的移动计算的方向。如果你站着不动,航向是空的。当你移动的时候,把航向指向你移动的方向.查看此文档:https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates/heading
您要查找的是“deviceorientation”事件。对于iOS/Safari,您必须首先手动请求该功能。(这是Typescript代码)