tileoverlay studio snippet library google example android overlay android-mapview

studio - markers android



Uso de ItemizedOverlay y OverlayItem en Android Beta 0.9 (1)

En aras de la exhaustividad, repetiré la discusión sobre la publicación de Reto en los Grupos de Android aquí.

Parece que si estableces los límites en tu dibujo, funciona 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 está descaradamente arrancado de la demo en MarcelP.info . También vea aquí para un buen howto.

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

He intentado usar las clases OverlayItem 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, solo son las ItemizedOverlays que no funcionan.

Una vez que he implementado mi propia ItemizedOverlay (y anulado createItem), parece que funciona la creación de una nueva instancia de mi clase (puedo extraer OverlayItems de ella) pero agregarla a la lista de Superposición de un mapa no la hace aparecer como debería.

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