Pergunta

Alguém conseguiu usar ItemizedOverlays no Android Beta 0.9?Não consigo fazer funcionar, mas não tenho certeza se fiz algo errado ou se essa funcionalidade ainda não está disponível.

Eu tenho tentado usar o ItemizedOverlay e OverlayItem Aulas.O objetivo pretendido é simular marcadores de mapa (como visto nos mashups do Google Maps), mas tive problemas para fazê-los aparecer no mapa.

Posso adicionar minhas próprias sobreposições personalizadas usando uma técnica semelhante, é apenas a ItemizedOverlays isso não funciona.

Depois de implementar meu próprio ItemizedOverlay (e substituído createItem), criar uma nova instância da minha classe parece funcionar (posso extrair OverlayItems dele), mas adicionando-o a um mapa Overlay list não faz com que apareça como deveria.

Este é o código que uso para adicionar o ItemizedOverlay classe como um Overlay para o meu 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();
}

Onde MyItemizedOverlay é definido 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;
  } 
}
Foi útil?

Solução

Para ser mais completo, repetirei a discussão no post de Reto no Grupos Android aqui.

Parece que se você definir os limites do seu drawable, o truque será resolvido:

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 propósito, o texto acima foi descaradamente arrancado de a demonstração em MarcelP.info.Além disso, aqui está um bom como fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top