Je semble avoir un problème avec l'utilisation de ItemizedOverlay et OveralyItems.Plusieurs éléments de superposition dans android
Je peux obtenir le premier overlayItem à apparaître sur la carte, mais aucun élément après cela.
Exemple de codeest: http://www.anddev.org/multiple_overlay_items-t12171.html
Aperçu rapide ici:
public class Markers extends ItemizedOverlay {
private Context ctx;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public Markers(Drawable defaultMarker, Context cont) {
super(boundCenterBottom(defaultMarker));
this.ctx = cont;
// TODO Auto-generated constructor stub
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i);
}
@Override
public boolean onTap(GeoPoint p, MapView mapView) {
// TODO Auto-generated method stub
return super.onTap(p, mapView);
}
@Override
protected boolean onTap(int index) {
// TODO Auto-generated method stub
Toast.makeText(this.ctx, mOverlays.get(index).getTitle().toString()+", Latitude: "+mOverlays.get(index).getPoint().getLatitudeE6(), Toast.LENGTH_SHORT).show();
return super.onTap(index);
}
@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size();
}
public void addOverlay(OverlayItem item) {
mOverlays.add(item);
setLastFocusedIndex(-1);
populate();
}
public void clear() {
mOverlays.clear();
setLastFocusedIndex(-1);
populate();
}
}
Des échantillons de la façon dont il est utilisé:
Markers usersMarker = new Markers(user,overview.this);
GeoPoint p = new GeoPoint((int) (lat * 1E6),(int) (lon * 1E6));
OverlayItem item = new OverlayItem(p,userData[0],userData[3]);
item.setMarker(this.user);
usersMarker.addOverlay(item);
le premier marqueur apparaît sur la carte, mais si je ajouter plus ils ne se présentent pas? Y a-t-il un problème avec la méthode populate()? J'ai essayé de l'appeler manuellement après avoir ajouté tous les marqueurs, mais cela n'a toujours pas aidé. S'il vous plaît, si vous avez une idée de ce qui pourrait être faux, dites-le.
appelez-vous invalidate() ou postInvalidate() dans votre activité avec mapview? – Sephy
Oui, après l'ajout de ItemizedOverlay pour mapper les superpositions que j'appelle invalider ... cela n'aide pas – Bostjan