studio - infowindow google maps android
Android Google Map: el marcador en el que se hace clic abre una nueva actividad o una ventana más grande (3)
Este código maneja el evento click click del fabricante y carga un nuevo diseño (XML) con algo de información:
/**
* adding individual markers, displaying text on on marker click on a
* bubble, action of on marker bubble click
*/
private final void addLocationsToMap() {
int i = 0;
for (Stores store : storeList) {
LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());
MarkerOptions marker = new MarkerOptions()
.position(l)
.title(store.getStoreName())
.snippet("" + i)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
googleMap.addMarker(marker);
++i;
}
googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
try {
popUpWindow.setVisibility(View.VISIBLE);
Stores store = storeList.get(Integer.parseInt(marker
.getSnippet()));
// set details
email.setText(store.getEmail());
phoneNo.setText(store.getPhone());
address.setText(store.getAddress());
// setting test value to phone number
tempString = store.getPhone();
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0,
spanString.length(), 0);
phoneNo.setText(spanString);
// setting test value to email
tempStringemail = store.getEmail();
SpannableString spanString1 = new SpannableString(tempStringemail);
spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
email.setText(spanString1);
storeLat = store.getLatitude();
storelng = store.getLongtitude();
} catch (ArrayIndexOutOfBoundsException e) {
Log.e("ArrayIndexOutOfBoundsException", " Occured");
}
}
});
}
He estado buscando ayuda para implementar OnMarkerClickListener pero nada de lo que he encontrado ha funcionado. Este es mi marcador a continuación y cuando se hace clic solo cambia de color (azul claro). Lo estoy buscando para abrir una ventana más grande para que pueda poner más información. es posible?
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(49.378,-0.3904))
.title("Hello World")
.snippet("This is my test app")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
El marcador funciona bien arriba en mi Mapa, pero ahora me gustaría hacer clic en el marcador y para que abra una nueva actividad / página o una ventana más grande, es más fácil trabajar con él. Como soy un verdadero novato en la creación de aplicaciones, si alguien que tiene un ejemplo exitoso puede poner un enlace o algún código.
¡Gracias por adelantado!
Editar:
Del tutorial que se sugirió, he cambiado algunos de MainActivity.java.
He agregado en OnMarkerClickListener y he elegido agregar métodos no implementados a la Clase Pública
public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {
Debajo de private void setUpMap () he agregado a mi código: private Marker myMarker, el oyente setonMarkerclick y myMarker =,:
private Marker myMarker;
{
googlemap.setOnMarkerClickListener(this);
myMarker = googlemap.addMarker(new MarkerOptions()
.position(new LatLng(LatLng))
.title("Hello World")
.snippet("My First App")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
}
En el método no implementado en la parte inferior tengo:
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
return false;
¿Qué necesito cambiar en la parte pública de OnMarkerClick booleana? No estoy recibiendo ningún error pero simplemente no funciona. ¿Qué más tengo que agregar o cambiar?
Cualquier ayuda es apreciada!
Marcador clic eventos
No ajustar al marcador después de hacer clic en el mapa de Android v2
Citando desde el post anterior
Puede usar un OnMarkerClickListener
para escuchar eventos de clic en el marcador. Para establecer esta escucha en el mapa, llame a GoogleMap.setOnMarkerClickListener (OnMarkerClickListener). Cuando un usuario hace clic en un marcador, se llamará onMarkerClick (Marcador) y el marcador se pasará como un argumento. Este método devuelve un valor booleano que indica si ha consumido el evento (es decir, desea suprimir el comportamiento predeterminado). Si devuelve falso, entonces el comportamiento predeterminado se producirá además de su comportamiento personalizado. El comportamiento predeterminado para un evento de clic de marcador es mostrar su ventana de información (si está disponible) y mover la cámara de manera que el marcador esté centrado en el mapa.
Use OnMarkerClickListener en su marcador.
Compruebe el enlace para los fragmentos de código
Google Maps API v2: ¿Cómo hacer que los marcadores sean clicables?
Ejemplo: Funciona en mi teléfono.
Marker source, destination; GoogleMap mMap; mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); source = mMap.addMarker(new MarkerOptions() .position(sc) .title("MyHome") .snippet("Bangalore") .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); destination = mMap.addMarker(new MarkerOptions() .position(lng) .title("MapleBear Head Office") .snippet("Jayanager") .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); mMap.setOnMarkerClickListener(marker -> { if (marker.getTitle().equals("MyHome")) // if marker source is clicked Toast.makeText(MainActivity.this, marker.getTitle(), Toast.LENGTH_SHORT).show();// display toast return true; });
Si necesita el evento Haga clic en un mercado, este código es la solución.
private GoogleMap mGoogleMap;
mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker source is clicked
Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
return true;
}
});
Buena suerte