Uso de ItemizedOverlay y OverlayItem En Android Beta 0.9


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

He estado tratando de usar las clases ItemizedOverlay y OverlayItem. Su propósito es simular marcadores de mapa (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 el ItemizedOverlays que no trabajo.

Una vez que he implementado mi propio ItemizedOverlay (y anulado CreateItem), crear una nueva instancia de mi clase parece funcionar (puedo extraer OverlayItems de ella), pero agregarla a la lista de superposición de un mapa no hace que aparezca como debería.

Este es el código que uso para agregar la clase ItemizedOverlay como una superposición 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();
}

Donde 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;
  } 
}
Author: Ragunath Jawahar, 2008-08-25

1 answers

Por el bien de la integridad Voy a repetir la discusión en el post de Reto en los Grupos Android aquí.

Parece que si usted establece los límites en su dibujable que hace el truco:

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 es descaradamente arrancado de la demo en MarcelP.info . También vea aquí para un buen howto.

 40
Author: eon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-20 15:03:17