2010-11-18 15 views
0

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 ...

Répondre

1

il ressemble à ceci est basé sur le tutoriel SDK. Vous avez ajouté deux éléments à itemoveroverlay et l'autre. Vous devez ajouter une méthode HelloItemizedOverlay, à savoir « claire »

public void clear() { 
    mOverlays.clear(); 
} 

Appelez cette méthode avant d'appeler

itemizedoverlay.addOverlay(overlayitem1); 
+0

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

+0

Heureux que cela a fonctionné. Votre lien vers votre autre question pointe cependant vers celui-ci! – NickT

+0

oh désolé, vérifiez ceci: http://stackoverflow.com/questions/4217090/why-this-thread-doesnt-work – NullPointerException