android - studio - Mostrar barra de herramientas para marcador de Google Maps automáticamente
google maps android sgoliver (7)
Agregué una solicitud de función aquí: http://code.google.com/p/gmaps-api-issues/issues/detail?id=7652
Tengo un marcador y cuando abro el mapa muestra el marcador. Cuando hago clic en él, muestra el título y una barra de herramientas que incluye dos botones en la parte inferior derecha del mapa que me permiten iniciar intentos para navegar al marcador o mostrarlo en Google Maps. Me gustaría que se muestren automáticamente cuando se abra el mapa en lugar de que el usuario haga clic en el marcador.
Me gusta esto :-) ... Parece que no puedo entender cómo hacer esto.
Yo he tratado:
// create marker
MarkerOptions marker = new MarkerOptions().position(
new LatLng(latitude, longitude)).title("title");
// adding marker
googleMap.addMarker(marker).showInfoWindow();
googleMap.getUiSettings().setMapToolbarEnabled(true);
Pero esto solo muestra el título del marcador y un botón en la parte superior derecha para ir a mi ubicación, no los dos botones de intención de la barra de herramientas en la parte inferior derecha.
Me gusta esto :-( ... Estoy un poco atrapado alguna idea?
Citando el documento:
En un mapa en modo lite, la barra de herramientas persiste independientemente de las acciones del usuario. En un mapa completamente interactivo, la barra de herramientas se desliza cuando el usuario toca un marcador y se desliza nuevamente cuando el marcador ya no está enfocado.
Parece que no hay forma de persistir la barra de herramientas en su caso, ya que es un mapa interactivo. Es posible que desee intentar usar el modo lite si es un requisito: https://developers.google.com/maps/documentation/android/lite
También mirando su código:
// create marker
MarkerOptions marker = new MarkerOptions().position(
new LatLng(latitude, longitude)).title("title");
// adding marker
googleMap.addMarker(marker).showInfoWindow();
googleMap.getUiSettings().setMapToolbarEnabled(true);
La última línea:
googleMap.getUiSettings().setMapToolbarEnabled(true);
es redundante a menos que lo esté configurando explícitamente como falso de antemano.
El documento dice:
Establece la preferencia de si la barra de herramientas del mapa debe estar habilitada o deshabilitada. Si está habilitado, los usuarios verán una barra con varias acciones dependientes del contexto, que incluyen ''abrir este mapa en la aplicación Google Maps'' y ''buscar indicaciones para el marcador resaltado en la aplicación Google Maps''.
Por defecto, la barra de herramientas del mapa está habilitada.
Espero que esto ayude.
La superposición que aparece cuando se hace clic en un marcador, se crea y destruye en el lugar de forma implícita. No puedes mostrar eso manualmente (todavía).
Si debe tener esta funcionalidad, puede crear una superposición sobre su mapa con 2
ImageViews
y llamar a las intenciones apropiadas cuando se hace clic en ellas:
// Directions
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
"http://maps.google.com/maps?saddr=51.5, 0.125&daddr=51.5, 0.15"));
startActivity(intent);
// Default google map
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
"http://maps.google.com/maps?q=loc:51.5, 0.125"));
startActivity(intent);
Nota: debe cambiar las coordenadas en función de
getPosition()
Marker y la ubicación del usuario.
Ahora para ocultar la superposición predeterminada, todo lo que necesita hacer es devolver verdadero en
OnMarkerClickListener
.
Aunque perderá la capacidad de mostrar
InfoWindows
y centrar la cámara en el marcador, puede imitarlo simplemente:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.showInfoWindow();
mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
return true;
}
});
Muestra un DialogFragment en lugar de la ventana de información y maneja todo lo que contiene.
@Override
public boolean onMarkerClick(Marker marker) {
FragmentManager fm = getSupportFragmentManager();
DialogFragment markerWebView = DialogFragment();
mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
markerWebView.show(fm, "fragment_marker");
return true;
}
O
use los clics del marcador para activar / desactivar una superposición utilizando un facsímil de un botón de mapa de Google
mMap.setOnMarkerClickListener(this);
mMap.setOnInfoWindowClickListener(this);
@Override
public boolean onMarkerClick(Marker marker) {
//here turn on the overlays for nav turns etc. for this marker.
return false
}
@Override
public void onInfoWindowClick(Marker marker) {
//here turn off the overlays for nav turns etc.
marker.hideInfoWindow();
}
Para la barra de herramientas que ha delineado en rojo, puede deshabilitarla usando el método setMapToolbarEnabled () en UISettings
De la documentación:
Establece la preferencia de si la barra de herramientas del mapa debe estar habilitada o deshabilitada. Si está habilitado, los usuarios verán una barra con varias acciones dependientes del contexto, que incluyen ''abrir este mapa en la aplicación Google Maps'' y ''buscar indicaciones para el marcador resaltado en la aplicación Google Maps''.
Ejemplo de código para deshabilitar los dos botones:
//Disable Map Toolbar:
mMap.getUiSettings().setMapToolbarEnabled(false);
En caso de que también se esté preguntando acerca de los botones de zoom, puede deshabilitarlos así:
mMap.getUiSettings().setZoomControlsEnabled(false);
Tuve un problema similar ..... si está de acuerdo con no permitir que el usuario navegue en el mapa y solo se enfoque en su marcador, puede usar el mapa en https://developers.google.com/maps/documentation/android/lite ... Cita de la documentación
En un mapa en lite-mode , la barra de herramientas persiste independientemente de las acciones del usuario. En un mapa completamente interactivo, la barra de herramientas se desliza cuando el usuario toca un marcador y se desliza nuevamente cuando el marcador ya no está enfocado.
De nuevo de docs
También de forma predeterminada cuando un usuario toca el mapa, la API inicia la aplicación móvil Google Maps. Puede anular esto utilizando GoogleMap.setOnMapClickListener () para configurar su propio oyente. También puede disable eventos de clic en el mapa, llamando a setClickable () en la vista que contiene MapView o MapFragment.
si no me equivoco, desea mostrar los dos botones relacionados con el marcador en el lado inferior derecho del mapa y esos botones tienen cierta dependencia del marcador si soy cierto, así que solo necesita implementar un nuevo método como código a continuación y simplemente llame a este método en crear y seguro en su marcador haga clic en escucha
@Override
public void markerIntentButtonShow(Marker marker) {
//setvisible(true) to your side buttons or call some Intent
Intent i = new Intent(getActivity(), MarkerViewDetails.class);
i.putExtra("marker_snippet", marker.getSnippet());
startActivity(i);
}
y llame al método en su escucha de clics
googleMap
.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
markerIntentButtonShow(marker);
}
});
y en tu onCreateView
MarkerOptions marker = new MarkerOptions().position(
new LatLng(latitude, longitude)).title("title");
googleMap.addMarker(marker).showInfoWindow();
markerIntentButtonShow(marker);