2016-12-12 4 views
1

J'ai la question suivante: est-il possible d'associer les données de localisation GPS à un itinéraire précédemment téléchargé à partir de l'API google directions? Je sais qu'il existe l'API Snap-to-roads mais je veux la forcer à l'associer à un point sur cette route spécifique, de plus l'accrochage aux routes n'a pas de mode "marche". Des idées sur la façon de faire cette correspondance de carte? CordialementAssociez l'emplacement GPS détecté au chemin de la direction API

+1

J'ai trouvé une méthode pour trouver le point le plus proche d'une polyligne et la projection du point sur ce polyligne http://stackoverflow.com/questions/36104809/find- le-point le plus proche-sur-polygone-à-l'emplacement-utilisateur (merci encore almighty antonio), mais je voudrais toujours connaître votre opinion sur les meilleures façons de faire ce type de correspondance de carte. – Poider12

+1

J'utilise la méthode que j'ai proposée dans la solution pour corriger les erreurs liées à la précision GPS (les erreurs GPS sont très corrélées au temps, donc un chemin donné est de plus en plus improbable au fil du temps) donc je pense que c'est la meilleure option si vous ne voulez pas utiliser la fonctionnalité Snap to Roads de l'API Google Maps Roads – antonio

+0

Merci beaucoup @antonio! Une dernière chose: avez-vous une fonction qui, au lieu de recevoir le chemin, l'origine, la distance (comme la fonction d'extrapolation que vous avez fournie), reçoit le chemin, l'origine et un point dans cette route et affiche la distance? – Poider12

Répondre

0

La route simplement polyline (ensemble de segments). Vous devez simplement trouver le point le plus proche de la polyligne. Cela signifie que l'une des deux possibilités est l'extrémité du segment le plus proche ou le point de projection le plus proche de l'un des segments. Ensuite, vous avez besoin d'un certain seuil (généralement basé sur la précision signalée par le récepteur GPS). Pour les calculs, vous devriez certainement chercher une bibliothèque géospatiale travaillant avec Java et Android. Pour les petites zones (disons que si la zone de délimitation minimale de la route est inférieure à 100 x 100 miles), il est possible d'utiliser des calculs euclidiens au lieu des calculs géodésiques. N'oubliez pas de mettre à l'échelle la longueur d'un degré de longitude (un degré de latitude est toujours de 60 Nm).

0

Avis de non-responsabilité: Je travaille pour Pathsense.

Nous avons, et continuons à travailler sur, un fournisseur de localisation pour donner en temps réel (ou légèrement retardé, selon la façon dont vous l'avez défini), des mises à jour de localisation correspondant à la carte pour Android. Cependant:

  • Il utilise le GPS et des capteurs pour qu'il reste dans la bonne route, il peut donc utiliser un peu plus de puissance que le GPS, si vous ne parvenez pas correctement (comme tout fournisseur d'emplacement). Bien que le réglage sur 0 soit encore meilleur que le GPS pour la correspondance de carte, si l'utilisateur conduit dans une zone avec beaucoup de bâtiments élevés, la mise à jour de la position peut encore suivre la mauvaise route pendant une courte période. . La fonction de délai est importante si vous n'avez pas besoin d'une mise à jour immédiate, car elle donne à la bibliothèque plus de temps pour déterminer la route correcte sur laquelle l'utilisateur se trouve.

Pathsense demo repo:
https://github.com/pathsense/pathsense-samples-android/tree/master/pathsense-invehiclelocationdemo-app

Cependant, si vous avez juste besoin d'avoir une carte assortie chemin qui ne sont pas en temps réel ou à peu près, et Aligner sur la route de Google ne vous convient pas , J'ai trouvé cette bibliothèque sympa qui pourrait être utile. Je ne l'ai pas encore essayé moi-même, donc je ne peux pas dire si cela fonctionne bien, mais cela pourrait être intéressant à regarder.

repo bibliothèque GraphHopper:
https://github.com/graphhopper/graphhopper