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.
- API de Google Map para aplicaciones Ionic
- Avisos legales de Google Maps API v2 Cadena demasiado larga
- ¿Hay algún límite para dibujar la ruta usando Geocoder (Android)?
- ¿Es posible eliminar la sombra de los iconos (elementos) en un googlemap?
- Android Phonegap - Cómo abrir una aplicación nativa de Google Maps
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
- Google Maps API v2: LatLngBounds de CameraPosition
- Android: Establecer el nivel de zoom en Google Maps para incluir todos los puntos marcadores
- Android Studio con gradle y Google Maps v2
- Android geocoder ubicación inversa - forma fiable para obtener la ciudad?
- ¿Cómo saber qué marcador se ha hecho clic en Google Maps v2 para Android?
- Contenido dinámico en Maps V2 InfoWindow
- Error de inicialización de Google Map v2 en el mecanismo de dex secundario android
- Mapas fuera de línea SDK para Android e iOS
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