Vaciar InfoWindow cuando se hace clic en Marcador
Este es mi código para agregar nuevos marcadores a mi GoogleMap:
MarkerOptions m = new MarkerOptions(); m.title(title); m.snippet(snippet); m.position(location); mMap.addMarker(m); mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { @Override public void onInfoWindowClick(Marker marker) { Toast.makeText(DemoActivity.this, "WindowClicked: "+ marker.getTitle() + ":" + marker.getSnippet(), Toast.LENGTH_SHORT).show(); } });
Ahora esto funciona muy bien cuando mi title
y mi snippet
están en inglés. El infoWindow
y el Toast
funcionan como se esperaba.
- Marcador v2 de la API de Google Maps de Google Maps con saltos de anclaje personalizados definidos cuando se arrastra
- Referencia de mapa de bits desconocida publicada
- Android: cómo volver a cargar marcadores personalizados una vez que la imagen se descarga a través de Picasso?
- Activación de un evento de mapa (como un clic de marcador) en Google Maps Android V2
- ¿Cómo manejar varios marcadores en Google Maps con la misma ubicación?
Sin embargo, como en mi caso, el title
y el snippet
están en árabe, el Toast
funciona bien, pero el InfoWindow muestra una ventana vacía .
Me parece un error relacionado con el idioma árabe. ¿Hay alguna manera de evitarlo?
- Cómo mover el marcador a lo largo de la polilínea mediante google map
- Android google maps marker desactivar la opción de navegación
- Google android maps api v2 Mostrar el título del marcador Siempre
- No se puede obtener GoogleMap OnMarkerClickListener para trabajar
- Google Maps API v2 con diferentes acciones de marcador
- La vista Google Maps de Google devuelve el error cuando se usa onTap () - Se supone que Alertdialog se muestra
- Google Maps versión-2 de Google muestra la dirección y el icono de mapa de Google
- Agregar marcador en la ubicación tocada usando google map en android
Una manera de evitar esto sería mostrar una ventana de información personalizada. Puede hacerlo creando un InfoWindowAdapter y configurándolo con GoogleMap.setInfoWindowAdapter () .
Para reemplazar la ventana de información predeterminada, anule getInfoWindow (Marker) con su interpretación personalizada y devuelva null para getInfoContents (Marcador). Para reemplazar sólo el contenido de la ventana de información dentro del marco de ventana de información predeterminado (la burbuja de llamada), devuelve null en getInfoWindow (Marker) y reemplaza getInfoContents (Marker) en su lugar.
Más información: https://developers.google.com/maps/documentation/android/marker#info_windows
@ Jimmithy respuesta resuelto mi pregunta.
Esto es sólo una implementación de tres pasos de este proyecto :
Paso 1 : Crear el diseño de su infoWindow. Aquí está el código popup.xml
:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:padding="2dip" android:src="@drawable/ic_launcher" android:contentDescription="@string/icon"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:textStyle="bold"/> <TextView android:id="@+id/snippet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp"/> </LinearLayout> </LinearLayout>
Paso 2: Cree su implementación de InfoWindowAdapter. Aquí está la clase PopupAdapter
:
class PopupAdapter implements InfoWindowAdapter { LayoutInflater inflater=null; PopupAdapter(LayoutInflater inflater) { this.inflater=inflater; } @Override public View getInfoWindow(Marker marker) { return(null); } @Override public View getInfoContents(Marker marker) { View popup=inflater.inflate(R.layout.popup, null); TextView tv=(TextView)popup.findViewById(R.id.title); tv.setText(marker.getTitle()); tv=(TextView)popup.findViewById(R.id.snippet); tv.setText(marker.getSnippet()); return(popup); } }
Paso 3: En su actividad, configure su adaptador en GoogleMap:
mMap.setInfoWindowAdapter(new PopupAdapter(getLayoutInflater()));
Y usted está establecido!
Debe utilizar este comando .title("\u200e"+"عربی").
- ¿Existe alguna diferencia entre Java y Java de Oracle utilizados en Android?
- ¿Puede un widget de casa tener un Contexto?