Marcador personalizado en google maps en android con vector icono de activo
¿Cómo podemos lograr un icono de marcador de mapa con el archivo de activos vectoriales , la forma en que google lo muestra así, mediante programación:
- Android onMarkerClick no llama después de que InfoWindow se oculte en GoogleMap Google Maps Android API v2
- Cómo dibujar el marcador en el centro de la polilínea
- Cargar imagen en el marcador de mapa con android
- ArrayIndexOutOfBounds en el dibujo de la polilínea de Android
- Android Google Maps v2 - Añadir objeto al marcador
Actualizar:
map.addMarker(new MarkerOptions() .position(latLng) .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_vector_asset)) .title(title);
Esto no funciona cuando se trata de activos vectoriales. La razón principal para hacer la pregunta. El error con el código anterior:
Java.lang.IllegalArgumentException: Error al descodificar la imagen. La imagen proporcionada debe ser un mapa de bits.
- Android: cómo volver a cargar marcadores personalizados una vez que la imagen se descarga a través de Picasso?
- Implementar la animación de caída de pines en google maps android
- Abrir URL desde Marcador, Android Google Maps V2
- Cómo mover el marcador a lo largo de la polilínea mediante google map
- Android Google map Excepción de puntero nulo al agregar marcador
- ¿Cómo activar el evento onClick de un marcador en un Google Maps V2 para Android?
- Problema de carga de imagen de Picasso en GoogleMap.InfoWindowAdapter
- ¿Cómo manejar varios marcadores en Google Maps con la misma ubicación?
Puede utilizar este método:
private BitmapDescriptor bitmapDescriptorFromVector(Context context, int vectorResId) { Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorResId); vectorDrawable.setBounds(0, 0, vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight()); Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.draw(canvas); return BitmapDescriptorFactory.fromBitmap(bitmap); }
Así que su código se verá así:
map.addMarker(new MarkerOptions() .position(latLng) .icon(bitmapDescriptorFromVector(getActivity(), R.drawable.your_vector_asset)) .title(title);
Prueba esto
MarkerOptions op = new MarkerOptions(); op.position(src_latlng); Marker origin_marker = googleMap.addMarker(op); Bitmap bitmap = getBitmap(this,R.drawable.ic_map_marker); origin_marker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap));
GetBitmap
public Bitmap getBitmap(Context context, int drawableId) { Drawable drawable = ContextCompat.getDrawable(context, drawableId); if (drawable instanceof BitmapDrawable) { return BitmapFactory.decodeResource(context.getResources(), drawableId); } else if (drawable instanceof VectorDrawable) { return getBitmap((VectorDrawable) drawable); } else { throw new IllegalArgumentException("unsupported drawable type"); } }
Ic_map_marker.xml
<vector android:height="32dp" android:viewportHeight="512.0" android:viewportWidth="512.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#f32f00" android:pathData="M288,284.8V480l-64,32V284.8c10.3,2.1 21,3.3 32,3.3S277.7,286.9 288,284.8zM384,128c0,70.7 -57.3,128 -128,128c-70.7,0 -128,-57.3 -128,-128S185.3,0 256,0C326.7,0 384,57.3 384,128zM256,64c0,-17.7 -14.3,-32 -32,-32s-32,14.3 -32,32s14.3,32 32,32S256,81.7 256,64z"/> </vector>
- Cómo horizontal / vertical desplazar una imagen panorámica en Android?
- Goole Firme para iOS o Android con acceso sin conexión, el servidor siempre obtiene redirect_uri_mismatch