Question

Quelqu'un a-t-il réussi à utiliser ItemizedOverlays dans Android bêta 0.9 ?Je n'arrive pas à le faire fonctionner, mais je ne sais pas si j'ai fait quelque chose de mal ou si cette fonctionnalité n'est pas encore disponible.

J'ai essayé d'utiliser le ItemizedOverlay et OverlayItem Des classes.Leur objectif est de simuler des marqueurs de carte (comme on le voit dans les mashups Google Maps), mais j'ai eu du mal à les faire apparaître sur la carte.

Je peux ajouter mes propres superpositions personnalisées en utilisant une technique similaire, c'est juste le ItemizedOverlays ça ne marche pas.

Une fois que j'ai implémenté le mien ItemizedOverlay (et remplacé createItem), créer une nouvelle instance de ma classe semble fonctionner (je peux extraire OverlayItems de celui-ci) mais en l'ajoutant à une carte Overlay la liste ne la fait pas apparaître comme elle le devrait.

C'est le code que j'utilise pour ajouter le ItemizedOverlay classe en tant que Overlay sur mon MapView.

// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List<Overlay> overlays = mapView.getOverlays();

  MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon));
  overlays.add(markers);

  OverlayItem oi = markers.getItem(0);
  markers.setFocus(oi);
  mapView.postInvalidate();
}

MyItemizedOverlay est défini comme:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
  public MyItemizedOverlay(Drawable defaultMarker) {
    super(defaultMarker);
    populate();
  }

  @Override
  protected OverlayItem createItem(int index) {
    Double lat = (index+37.422006)*1E6;
    Double lng = -122.084095*1E6;
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text");
    return oi;
  }

  @Override
  public int size() {
    return 5;
  } 
}
Était-ce utile?

La solution

Par souci d'exhaustivité, je répéterai la discussion sur le message de Reto au Groupes Android ici.

Il semble que si vous définissez les limites de votre dessin, cela fait l'affaire :

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

À propos, ce qui précède est arraché sans vergogne la démo sur MarcelP.info.Voici également un bon comment faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top