8
votes

Mettez en surbrillance un itinéraire spécifié sur Google Maps V2 Android

À droite, alors je suis actuellement en train d'utiliser l'API Google Directions dans mon application pour récupérer la route entre deux emplacements.

Lorsque j'envoie une demande d'itinéraire, je récupère un certain nombre de détails à Json en ce qui concerne la route y compris les noms de chaque route sur l'itinéraire, leurs coordonnées de départ et de bout en bout correspondantes, ainsi que leur valeur polyline.

Par exemple: Si j'envoie la demande http://maps.googleapis.com/maps / API / Directions / Json? Origine = Redfern + Ave, + Dublin & Destination = Limetree + Ave, + Dublin & Sensor = Faux entre deux routes, je reçois la réponse JSON suivante (sortie pour une route le long de la route). xxx

jusqu'à présent, mon application analyse ces informations et répertorie simplement les routes et les instructions dans une vue de liste comme celle-ci:

 Entrez la description de l'image ici

Qu'est-ce que je Voulez-vous faire mettre en valeur tout itinéraire de A à B sur une carte, mais je n'ai trouvé rien d'utile en ligne sur la façon de faire cela sur la nouvelle API V2 Google Maps. Je vois que les polylines sont utilisées au lieu de superpositions pour dessiner des lignes sur Google Maps V2, cependant, à partir de ce que je peux dire, ils ne tirent que des lignes droites qui sont inutiles pour moi. Est-ce qu'il y a de toute façon de mettre en évidence l'itinéraire à l'aide des informations que j'ai à ma disposition (noms de route, coordonnées de début et de fin, des points de polyligne? Toute aide est appréciée.

aussi, je vois qu'il y a Une valeur «polyline 'dans la réponse qui pourrait être utile, mais je ne peux pas déterminer comment analyser ou utiliser ce peu d'informations. Est-ce que quelqu'un sait comment je peux donner un sens à cette valeur pour tracer une polyligne? < Pré> xxx

Edit: mon code de solution est fourni dans ma réponse ci-dessous.


0 commentaires

3 Réponses :


3
votes

avec des cartes Android API 2 En effet, vous devez utiliser la classe Polyline pour dessiner l'itinéraire sur une carte (au moins c'est le moyen le plus simple :)). Ce que vous devez faire - consiste à fournir une liste de points sur votre itinéraire.

En termes de surbrillance de la route active - il existe une interface pratique dans Polyline Classe SetColor , Donc, vous pouvez définir la couleur de votre choix avec la route active (y compris un canal alpha) xxx

Veuillez noter que vous êtes libre de modifier la couleur de la polyline à tout moment. , ou quelque chose)

Comme pour la réponse JSON de Google - Les points d'itinéraire sont codés, vous pouvez donc vous référer à Cette question pour comprendre comment le décoder


1 commentaires

Eh bien, si votre route a 10 points, la polyligne dessinera 10 lignes droites connectées à l'autre. Combien de points votre itinéraire a et quelles coordonnées réelles de ces points sont - ces informations sont codées dans Points Champ



36
votes

J'ai finalement réussi à le faire fonctionner après beaucoup d'essais et d'erreurs! Il met maintenant pleinement en évidence un itinéraire spécifié de A à B sur une carte (comme on le voit dans ma capture d'écran ci-dessous). J'ai également jeté mon code pour que quiconque puisse en avoir besoin à l'avenir.

Entrez la description de l'image ici < / p> xxx


10 commentaires

Cela m'aidez beaucoup. Merci. Vous devez envisager de sauvegarder la ligne de polyline dans un tableau si vous souhaitez réutiliser la même carte, vous pouvez supprimer les lignes de cette carte.


Eh bien, il y a une co-incidence, j'ai littéralement passé des heures aujourd'hui essayant de comprendre pourquoi la ligne.ReMove () ne fonctionnait pas. Merci!


Salut @Dancoghlan, pourquoi devez-vous dessiner la ligne entre tous les 2 points consécutifs? Pouvons-nous ne pas dessiner la polyligne pour tous les points à 1 aller? - développeurs.google.com/maps/documentation/andrroid/.../a>


@Dancoghlan Bonjour, je suis nouveau à Android, je ne sais pas ce que je dois donner pour cette chaîne startlocation = i.getstringextra ("startloc"); Endlocation de chaîne = i.getstringextra ("endloc");


StartLoc et endloc sont simplement les emplacements de début et de fin entrés par l'utilisateur dans une activité précédente. Les valeurs sont transmises de l'activité précédente à l'activité actuelle à l'aide d'une intention. Afin de récupérer les emplacements de début et de fin passés dans l'intention d'utilisation dans l'activité actuelle, vous devez appeler la méthode i.Getstringextra ("startloc"), dans laquelle StartLoc est simplement le nom que j'ai donné à la variable de chaîne contenant le démarrage LOC passé dans l'intention. Dans votre activité précédente, vous devez avoir la ligne i.putextra ("startloc", démarrage de l'emplacement saisi par l'utilisateur) etc.


Coordonnées de longitude de latitude, séparées par des points ou des virgules?


Merci Alott ... Cela a vraiment aidé :) Continuez à coder :)


J'ai tout mis en place mais il semble que les coordonnées d'origine et de destination ne sont pas entrées correctement, aucune aide avec cela?


Fonctionne bien. Merci pour l'info.


@ KABUTO178 Pour une référence future comme aide, suivez simplement la documentation: l'adresse, l'identifiant de lieu ou la latitude textuelle / la de la longitude à partir desquelles vous souhaitez calculer des instructions peuvent être utilisées comme origine. Voici un lien développeurs.google.com/maps/documentation/directions/Introce/a >