J'ai une application googlemap qui affiche deux éléments (classedoveroveroverlay) et j'ai un bouton de mise à jour. Quand j'appuie sur le bouton de mise à jour, je veux enlever les éléments de la carte, et mettre les mêmes éléments mais avec les nouvelles valeurs de latitude et longitude (j'ai un service qui actualise les champs de latitude et de longitude que j'ai dans sharedPreferences, et aussi je recibe l'autre position par un paquet)Comment actualiser les positions des articles dans un googlemap?
ce que je fais mal? quand je fais de mon code, les éléments de la carte ne sont pas supprimés .... juste de nouveaux éléments apparaissent ... mais je veux enlever les anciens
updateButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mapOverlays.clear();
updateMyPosition();
updateFriendPosition();
}
});
et ce sont mes deux fonctions:
private void updateFriendPosition()
{
Bundle bundle = this.getIntent().getExtras();//get the intent & bundle passed by X
userText.setText(bundle.getString("user"));
permissionText.setText(bundle.getString("permission"));
lastUpdateText.setText(bundle.getString("lastupdate"));
String coordinates[] = {bundle.getString("lat"), bundle.getString("lon")};
lat = Double.parseDouble(coordinates[0]);
lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
OverlayItem overlayitem1 = new OverlayItem(p, bundle.getString("user"), "Hi Friend!");
itemizedoverlay.addOverlay(overlayitem1);
mapOverlays.add(itemizedoverlay);// dibujo la estrella con la posicion actual del friend
mc.animateTo(p); ///nos centra el mapa en la posicion donde esta nuestro amigo
mc.setZoom(10); /// ajusta el zoom a 10
}
private void updateMyPosition()
{
String coordinates[] = {settings.getString("mylatitude", null),settings.getString("mylongitude", null)};
lat = Double.parseDouble(coordinates[0]);
lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
OverlayItem overlayitem1 = new OverlayItem(p, "Me", "My Position");
itemizedoverlay2.addOverlay(overlayitem1);
mapOverlays.add(itemizedoverlay2);//dibujo mi icono para mostrarme a mi
}
i également tryed avec invalidate() sur le MapView, mais il ne fonctionne pas ... encore peindre les objets anciens ...
merci! hehe résolu peut-être vous pouvez m'aider avec cette question aussi? http://stackoverflow.com/questions/4216231/how-to-actualice-the-positions-of-the-items-in-a-googlemap – NullPointerException
Heureux que cela a fonctionné. Votre lien vers votre autre question pointe cependant vers celui-ci! – NickT
oh désolé, vérifiez ceci: http://stackoverflow.com/questions/4217090/why-this-thread-doesnt-work – NullPointerException