Comment dessiner une ligne dynamique (route) avec Google Maps API Android v2
Je me demandais quelle est la meilleure pratique consiste à dessiner une dynamique de l'itinéraire sur une carte avec Google Maps API v2. Je veux avoir une carte qui est capable de prolonger la route pendant que l'utilisateur est en mouvement. Il semble être la solution la plus évidente par l'aide d'une Polyligne et PolylineOptions. Mais je ne peux pas trouver un moyen facile d'ajouter des points après j'ai instancié la Polyligne. Pour dessiner une Polyligne est quelque chose comme ceci:
PolylineOptions polylineOptions = new PolylineOptions();
polylineOptions.add(POINT1, POINT2, POINT3);
Polyline line = googleMap.addPolyline(polylineOptions);
Mais après que j'ai passé la ligne d'GoogleMap je ne peux pas ajouter de tout nouveaux points. Quelque chose comme
polylineOptions.add(POINT1, POINT2, POINT3);
ne rien ajouter à mon itinéraire.
Je pourrais juste ajouter complète de la nouvelle Polyligne. Mais n'est-ce pas là une façon de prolonger simplement l'existant? J'ai trouvé un moyen en obtenant tous les points de la Polyligne, ajouter le nouveau point, et de les écrire de retour à la ligne:
List<LatLng> points = line.getPoints();
points.add(POINT4);
line.setPoints(points);
Mais il semble être lourd pour moi. Des idées?
OriginalL'auteur Kris | 2012-12-18
Vous devez vous connecter pour publier un commentaire.
Dans le
mainActivity
classe, définir une private staticLatLng
variable nomméeprev
et l'initialiser à(0,0)
premier. Aussi faire une variable d'indicateur et d'affecter 0 à elle. Dans l'ÉcouteurOnLocationChanged
méthode, créer une variable localeLatLng
nommécurrent
et obtenir en cours coordonne ici... vérifier la valeur de l'indicateur d'abord, si il est à 0 alors attribuercurrent
àprev
. Puis ajouter une polyligne.Attribuer
current
àprev
de nouveau (ce sera le cas à chaque fois comme la première fois, le drapeau sera 1)Par exemple:
Quelque chose comme ça. Bien sûr, les performances des améliorations peuvent être apportées, c'est juste un exemple de code. Mais il devrait fonctionner. Chaque fois que la polyligne sera ajouter que le précédent et le point courant, ce qui permet d'étendre ce point par point.
OriginalL'auteur SarthakShah
Regarder la documentation, il semble que
polylineOptions.add(LatLng)
etgoogleMap.addPolyline(polylineOptions)
méthodes renvoient lapolylineOptions
objet. La première méthode est également de retourpolylineOptions
AVEC le point ajouté à la fin.Je pense que vous aurez à ajouter les
polylineOptions
àgoogleMap.addPolyline(polylineOptions)
à nouveau ou utilisergoogleMap.clear()
avant d'ajouter un deuxième temps. Somehting comme ceci:OriginalL'auteur qubz