2017-07-24 2 views
0

Je rencontre un problème avec la fonction de géolocalisation HTML5 getCurrentPosition() et l'affichage de ma position actuelle avec un marqueur dans Google Maps. Mon application est écrite en Elm en utilisant le paquetage elm-lang/geolocation pour retourner ma position avec enableHighAccuracy activé. Il n'y a pas de problèmes pour obtenir un lat/lng ou pour placer un marqueur à ce moment.getCurrentPosition lat/lng ne pas traduire correctement position dans Google Maps

Le problème que j'ai est que le marqueur sur la carte ne reflète pas ma position réelle. Ma précision est de 12 pieds, et le marqueur placé 10 fois est toujours dans une très petite zone de la carte, mais cette très petite zone est à environ 90 pieds de l'endroit où je me trouve. Je n'arrive pas à comprendre si le problème provient du fait que l'emplacement GPS renvoyé par mon téléphone est juste à côté du positionnement de Google Maps, si mon GPS utilise un type différent de schéma avec lequel les coordonnées lat/lng sont affichées, si la géolocalisation n'interprète pas correctement, ou si Google Maps n'affiche pas les marqueurs dans des coordonnées GPS très précises. Mon application examinera les distances de moins de 100 pieds, donc une différence de 90 pieds dans le placement d'un marqueur est énorme.

Je regarde la carte Google en mode satellite, si cela fait une différence. Voici comment la carte est initialisée.

window.roundsMap = new google.maps.Map(document.getElementById(ele), 
       { zoom: 18 
       , tilt: 0 
       , mapTypeId: google.maps.MapTypeId.SATELLITE 
       , center: coords 
       , disableDefaultUI: true 
       } 

Et voici comment le marqueur est placé (MyIcon est un objet svg js créé dans une autre fonction):

new google.maps.Marker({ 
      map: window.roundsMap, 
      icon: myIcon, 
      position: myPos 
     }) 

Répondre

0

Est-ce que vous essayez d'activer une grande précision?

navigator.geolocation.getCurrentPosition(
    geolocationSuccess, 
    geolocationError, { 
     timeout: 0, 
     enableHighAccuracy: true, 
     maximumAge: Infinity 
    } 
); 

source: https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions/enableHighAccuracy

Vous pouvez également toujours regarder la position de l'utilisateur avec watchPosition, les résultats sont plus précis:

navigator.geolocation.watchPosition(
    geolocationSuccess, 
    geolocationError, { 
     timeout: 0, 
     enableHighAccuracy: true, 
     maximumAge: Infinity 
    } 
); 

Source: https://developer.mozilla.org/fr/docs/Web/API/Geolocation/watchPosition

+0

Oui, « pour revenir mon emplacement avec enableHighAccuracy activé, "ce qui semble me donner une très bonne lecture sur le GPS. Lorsque vous effectuez un zoom sur la carte, chaque tick que je reçois est à moins d'un quart de pouce l'un de l'autre. Donc le vrai exemple ici est que je me tiens au bout de mon allée sans arbres ni bâtiments à ma façon. J'enregistre 10 ticks GPS, et ceux-ci apparaissent tous comme sur mon porche, tous à moins de 10ft l'un de l'autre, mais tous près de 100ft de l'extrémité de l'allée. –

+0

Et avez-vous essayé d'utiliser 'watchPosition'? – Damien

+0

Je l'ai utilisé, et il donne les mêmes résultats. –