Android tracer un chemin sur une mapView à partir d'une grande quantité de longitude/latitude points
Je suis en train d'écrire une application qui a besoin de dessiner un "itinéraire", composé de beaucoup de points GPS (long+lat). Les points sont rapprochés et ne suivez pas les routes, il suffit de tracer une ligne entre chaque point est idéal.
La mise en œuvre actuelle j'ai, c'est très lent comme je suis en boucle sur les coordonnées GPS et la création d'un nouveau Point et overlayitem dans le détail de la superposition. Cela prend environ 20 secondes pour qu'il se charge de tous ces points et de les attirer à la mapview. Est-il un moyen dans lequel je peux construire une série de lignes ou de point à partir des coordonnées GPS et les dessiner sur la mapview?
Exemple de mise en œuvre:
for each set of long+lats //removed to simplify
point= new GeoPoint(latitude,longitude);
overlayitem = new OverlayItem(point,"","");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
mMapController.setCenter(point);
Merci d'avance, j'espère que j'ai expliqué assez bien.
Vous devez vous connecter pour publier un commentaire.
Vérifier ma réponse avec l'exemple de code ici:
Comment dessiner un chemin d'accès sur une carte à l'aide du fichier kml?
Cet exemple traite un fichier kml fichiers (format xml fourni par Google Maps ou Google Earth pour le calcul de l'itinéraire) et attire l'geo les points sur la carte. Si vous avez déjà une liste de geo points, vous pouvez juste regarder le drawPath() la méthode; et d'ajuster la façon dont vous passez le geo coords paramètres (j'ai encapsulé dans un simple haricot que j'ai nommé NavigationDataSet).
Ce n'est pas tout à fait clair pour moi ce que vous faites parce que je ne suis pas sûr de savoir comment itemizedOverlay est dessin entre les points. Mais je parie que le principal problème est que vous utilisez un tas de OverlayItems quand il serait beaucoup plus rapide de simplement sauter cette partie entièrement et remplacer le itemizedOverlay de
draw()
méthode. J'ai fait cela avant et il fonctionne très bien pour le dessin au trait. La base de pseudo est:Car la vitesse est un problème, assurez-vous de créer la Peinture des objets dans la ItemizedOverlay du constructeur; ils peuvent être réutilisés autant que vous le souhaitez.
Également comme une note de côté, il semblerait que vous utilisez
addOverlay()
comme l'a démontré Bonjour, MapView démo. Le seul problème avec l'aide de qui est ce qu'ils appellentpopulate()
chaque fois que vous ajoutez un élément; si vous ajoutez un tas de points, il est préférable d'ajouter un tas de superpositions à la fois, puis appelpopulate()
à la fin.