Frage

Hat jemand es geschafft, es zu benutzen? ItemizedOverlays in Android Beta 0.9?Ich kann es nicht zum Laufen bringen, bin mir aber nicht sicher, ob ich etwas falsch gemacht habe oder ob diese Funktionalität noch nicht verfügbar ist.

Ich habe versucht, das zu verwenden ItemizedOverlay Und OverlayItem Klassen.Ihr beabsichtigter Zweck besteht darin, Kartenmarkierungen zu simulieren (wie in Google Maps Mashups zu sehen), aber ich hatte Probleme, sie auf der Karte anzuzeigen.

Ich kann meine eigenen benutzerdefinierten Overlays mit einer ähnlichen Technik hinzufügen, es ist einfach so ItemizedOverlays das funktioniert nicht.

Sobald ich mein eigenes implementiert habe ItemizedOverlay (und überschrieben createItem), scheint das Erstellen einer neuen Instanz meiner Klasse zu funktionieren (ich kann extrahieren OverlayItems davon), sondern es zu einer Karte hinzufügen Overlay list lässt es nicht so erscheinen, wie es sollte.

Dies ist der Code, den ich zum Hinzufügen verwende ItemizedOverlay Klasse als Overlay weiter zu meinem 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();
}

Wo MyItemizedOverlay ist definiert als:

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;
  } 
}
War es hilfreich?

Lösung

Der Vollständigkeit halber wiederhole ich die Diskussion zu Retos Beitrag drüben Android-Gruppen hier.

Es scheint, dass es den Zweck erfüllt, wenn Sie die Grenzen für Ihr Zeichenobjekt festlegen:

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

Übrigens ist das oben Gesagte schamlos entwendet die Demo bei MarcelP.info.Auch hier ist ein gute Anleitung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top