2017-07-24 59 views
0

我在使用HTML5地理位置getCurrentPosition()时遇到问题,并在Google地图中使用标记显示我的实际位置。我的应用程序是使用elm-lang/geolocation包在Elm中写入的,返回我的位置,并打开enableHighAccuracy。获得经纬度或在该纬度/经度上放置标记没有问题。getCurrentPosition lat/lng没有翻译成Google地图中的正确位置

我遇到的问题是地图上的标记不能反映我的实际位置。我的准确度降至12英尺,而放置10次的标记始终位于地图的非常小的区域内,但距离我所站的地方非常小的区域大约为90英尺。我无法弄清楚,如果我的手机返回的GPS位置与Google地图的定位刚刚关闭,如果我的GPS使用某种不同类型的显示lat/lng坐标的方案,如果地理定位不解释它们是否正确,或者Google地图是否不以非常精确的GPS坐标显示标记。

我的应用程序将检查小于100英尺的距离,因此标记位置的90英尺差异很大。

我在卫星模式下查看Google地图,如果这有所作为。这是地图如何初始化的。

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 
     }) 

回答

0

你尝试实现高精确度?

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

+0

是,“给我回开启enableHighAccuracy的位置“,这看起来似乎给我一个非常好的GPS读数。当在地图上一直放大时,我得到的每一个刻度都在四分之一英寸之内。所以这里的一个真实例子是,我站在我的车道尽头,没有树木或建筑物。我记录了10个GPS蜱虫,这些蜱虫都出现在我的前廊上,全部在彼此10英尺内,但距离车道尽头近100英尺。 –

+0

你是否尝试使用'watchPosition'? – Damien

+0

我已经使用它,并且它给出了相同的结果。 –