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