Mapas de Android: uso de un diseño como elemento de superposición
Estoy usando mapas en Android proporcionados por MapQuest, pero implementado de la misma manera que Google Maps por lo que la misma pregunta se aplica.
Para el elemento de superposición, me gustaría utilizar un diseño con un ImageView y TextView como el TextView va a mostrar alguna información. El problema es que sólo puedo mostrar un dibujable como mi superposición que debe venir de la carpeta Drawable.
- MapView dentro de ScrollView?
- Google Maps API v2: ¿Cómo hacer que los marcadores no se puedan hacer clic?
- Android - Cómo mostrar las direcciones en la vista web
- Cómo dibujar un camino en un mapa con el archivo kml?
- Liberar la aplicación de Android firmada, Google Plus Login y Google Map no funcionan
Aquí está el código para agregar el elemento de superposición:
private void loadSingleOverlay(TapControlledMap mapViewPassed, String title, String address) { Drawable icon = getResources().getDrawable(R.drawable.marker2); OverlayItem newItem = new OverlayItem(point, title, address); overlay = new ExtendedItemizedOverlay(icon); overlay.addItem(newItem); // add a tap listener overlay.setTapListener(tapListener); List<Overlay> listOfOverlays = mapViewPassed.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(overlay); mapViewPassed.invalidate(); }
Y el diseño que quiero inflar y utilizar:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/marker_red" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> </RelativeLayout>
Aquí está el resultado que estoy buscando:
Gracias a todos
- Cómo convertir un dibujable en un mapa de bits para cambiar el color de un marcador en Google Maps Android API v2
- mapas androides, marcadores y fugas de memoria
- Mapfragment findFragmentById siempre null
- Marcador v2 de la API de Google Maps de Google Maps con saltos de anclaje personalizados definidos cuando se arrastra
- Superposiciones de mapas eficaces en Google Maps de Google
- Cómo obtener la cuenta de los marcadores en la región visible en el mapa
- Direcciones de manejo de la web móvil desde la ubicación actual
- Phonegap Android Internet no funciona
No es fácil. La única manera que sé es crear su vista (por ejemplo, el diseño con fondo y vista de texto) y luego convertirlo como un mapa de bits.
public static Bitmap loadBitmapFromView(View v) { DisplayMetrics dm = v.getContext().getResources().getDisplayMetrics(); Bitmap b = Bitmap.createBitmap(Math.round(v.getMeasuredWidth() * dm.density), Math.round(v.getMeasuredHeight() * dm.density), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.draw(c); return b; }
A continuación, puede agregar a su mapa con algo como a continuación. Tendrás que jugar con los límites dependiendo del tamaño de tu marcador.
Drawable d = new BitmapDrawable(Utils.loadBitmapFromView(yourView)); d.setBounds(-35, -30, Math.round(d.getIntrinsicWidth() * dm.density) - 35, Math.round(d.getIntrinsicHeight() * dm.density) - 30); overlayItem.setMarker(d); overlayListView.add(overlay);
- WebView no hace css como el navegador hace?
- Animación de la carga con el embalador de la textura en andengine