我在使用 HTML5 Geolocation getCurrentPosition()
并让我的实际位置显示在 Google map 中时遇到问题。我的应用程序是使用 elm-lang/geolocation
包在 Elm 中编写的,以返回我的位置并启用 enableHighAccuracy。获取纬度/经度或在该纬度/经度处放置标记都没有问题。
我遇到的问题是 map 上的标记没有反射(reflect)我的实际位置。我的准确度下降到 12 英尺,标记放置 10 次后始终位于 map 的一个非常小的区域内,但是这个非常小的区域距离我站立的位置大约 90 英尺。我无法确定问题是否是我的手机返回的 GPS 位置与 Google map 的定位不一致,如果我的 GPS 使用某种不同类型的方案显示经纬度坐标,如果地理定位不解释它们正确,或者如果谷歌地图只是不显示非常精确的 GPS 坐标中的标记。
我的应用程序将检查小于 100 英尺的距离,因此 90 英尺的标记放置差异很大。
我正在以卫星模式查看 Google map ,如果这有影响的话。以下是 map 的初始化方式。
window.roundsMap = new google.maps.Map(document.getElementById(ele),
{ zoom: 18
, tilt: 0
, mapTypeId: google.maps.MapTypeId.SATELLITE
, center: coords
, disableDefaultUI: true
}
下面是标记的放置方式(myIcon 是在另一个函数中创建的 js svg 对象):
new google.maps.Marker({
map: window.roundsMap,
icon: myIcon,
position: myPos
})
最佳答案
您是否尝试启用高精度?
navigator.geolocation.getCurrentPosition(
geolocationSuccess,
geolocationError, {
timeout: 0,
enableHighAccuracy: true,
maximumAge: Infinity
}
);
来源:https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/enableHighAccuracy
您还可以使用 watchPosition 持续观察用户位置,结果通常更准确:
navigator.geolocation.watchPosition(
geolocationSuccess,
geolocationError, {
timeout: 0,
enableHighAccuracy: true,
maximumAge: Infinity
}
);
来源:https://developer.mozilla.org/fr/docs/Web/API/Geolocation/watchPosition
关于javascript - getCurrentPosition lat/lng 未转换为 Google map 中的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45286372/