Domanda

Qualcuno è riuscito ad usarlo ItemizedOverlays nell'Android Beta 0.9?Non riesco a farlo funzionare, ma non sono sicuro di aver fatto qualcosa di sbagliato o se questa funzionalità non è ancora disponibile.

Ho provato a utilizzare il file ItemizedOverlay E OverlayItem classi.Il loro scopo previsto è simulare gli indicatori di mappa (come visto in Google Maps Mashup) ma ho avuto problemi a farli apparire sulla mappa.

Posso aggiungere le mie sovrapposizioni personalizzate utilizzando una tecnica simile, è solo il ItemizedOverlays quello non funziona.

Una volta implementato il mio ItemizedOverlay (e sovrascritto createItem), la creazione di una nuova istanza della mia classe sembra funzionare (posso estrarre OverlayItems da esso) ma aggiungendolo a una mappa Overlay list non lo fa apparire come dovrebbe.

Questo è il codice che utilizzo per aggiungere il file ItemizedOverlay classe come un Overlay al mio 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();
}

Dove MyItemizedOverlay è definito come:

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;
  } 
}
È stato utile?

Soluzione

Per completezza ripeterò la discussione sul post di Reto su Gruppi Android qui.

Sembra che se imposti i limiti sul tuo drawable faccia il trucco:

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);

A proposito, quanto sopra è stato spudoratamente copiato la demo su MarcelP.info.Inoltre, ecco un buon tutorial.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top