2017-07-24 51 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

我已經使用它,並且它給出了相同的結果。 –