Uso de ItemizedOverlay y OverlayItem en Android Beta 0.9
¿Alguien ha logrado utilizar ItemizedOverlays
en Android Beta 0.9? No puedo conseguir que funcione, pero no estoy seguro si he hecho algo mal o si esta funcionalidad aún no está disponible.
He estado intentando utilizar 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.
- ¿Cómo crear una superposición que bloquea los eventos de toque a la interfaz de usuario debajo de él?
- Android ViewPager: fragmentos superpuestos cuando el ancho de página se establece en 90%
- Mi superposición no aparece hasta que se pulse mapView en android
- Pantalla emergente / superpuesta en panal de android
- Android cómo dibujar la pintura en mano libre en MapView con superposición?
Puedo añadir mis propias superposiciones personalizadas usando una técnica similar, es sólo el ItemizedOverlays
que no funcionan.
Una vez que he implementado mi propio ItemizedOverlay
(y sobreescribido createItem), la creación de una nueva instancia de mi clase parece funcionar (puedo extraer OverlayItems de ella), pero añadirla a la lista de superposición de un mapa no hace que aparezca como debería.
Este es el código que utilizo para añadir 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; } }
- ¿Por qué mi sistema se superpone capturando todos los toques (no es posible interacción con la vista subyacente)
- Dibujar superposición en Android (en todo el sistema)
- Información sobre Android sobre superposiciones flotantes / elementos sobre otras aplicaciones
- ICS teclado de vuelta, los botones de inicio no tomar contacto cuando se abre en la superposición
- Quiero agregar popover / overlay / hotspot en el streetview de google map en android
- Especifique Layout Margen superior para la barra de acción de superposición
- Después de eliminar los eventos de tapa de OverlayItem todavía activan
- ¿Cómo puedo poner una vista encima de un glSurfaceView con un fondo transparente?
En aras de la integridad voy a repetir la discusión sobre el post de Reto en los Grupos de Android aquí.
Parece que si estableces los límites en tu drawable 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);
Entre, lo anterior es desvergonzadamente arrancado de la demo en MarcelP.info . También ver aquí para un buen howto.
- Realice una actualización ProgressBar sin problemas
- Android EditText, teclado suave mostrar / ocultar el evento?