Pregunta

¿Alguien ha conseguido utilizar ItemizedOverlays en Android Beta 0.9?No consigo que funcione, pero no estoy seguro si he hecho algo mal o si esta funcionalidad aún no está disponible.

He estado tratando de usar el ItemizedOverlay y OverlayItem clases.Su propósito es simular marcadores de mapas (como se ve en Google Maps Mashups), pero he tenido problemas para que aparezcan en el mapa.

Puedo agregar mis propias superposiciones personalizadas usando una técnica similar, es solo la ItemizedOverlays eso no funciona.

Una vez que haya implementado mi propio ItemizedOverlay (y anulado createItem), crear una nueva instancia de mi clase parece funcionar (puedo extraer OverlayItems de él) pero agregándolo al mapa Overlay La lista no hace que aparezca como debería.

Este es el código que uso para agregar el ItemizedOverlay clase como un Overlay a mi 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();
}

Dónde MyItemizedOverlay Se define como:

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;
  } 
}
¿Fue útil?

Solución

Para completar, repetiré la discusión sobre la publicación de Reto en el Grupos de Android aquí.

Parece que si estableces los límites de tu dibujable, funciona:

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

Por cierto, lo anterior está descaradamente arrancado de la demostración en MarcelP.info.Además, aquí hay un buen cómo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top