Obecnie korzystam z klasy ItemizedOverlay
z interfejsu API Map V1, który śledzi aktualnie wybrany znacznik (jeśli taki jest). Czy w Mapach V2 istnieje podobna funkcjonalność do określenia, który znacznik jest aktualnie wybrany? Czy istnieje również sposób na programowy wybór nowego znacznika?Jak wybrać znacznik za pomocą interfejsu API Map V2 dla systemu Android?
5
A
Odpowiedz
16
Tak.
Aby określić znacznik jest zaznaczony, dodać OnInfoWindowClickedListener do GoogleMap:
//mMap is an instance of GoogleMap
mMap.setOnInfoWindowClickListener(getInfoWindowClickListener());
zastąpić metodę onInfoWindowClicked() wewnątrz OnInfoWindowClickListener:
public OnInfoWindowClickListener getInfoWindowClickListener()
{
return new OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker marker)
{
Toast.makeText(getApplicationContext(), "Clicked a window with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show();
}
};
}
i śledzić wybranego markera , być może ze zmienną instancji.
Aby wybrać znacznik programowo, trzeba zachować listę wszystkich markerów, a następnie uzyskać uchwyt na jednym i nazywają showInfoWindow(), podobny do tego:
//markerList is just a list keeping track of all the markers you've added
//to the map so far, which means you'll have to add each marker to this
//list as you put it on the map
Marker marker = this.markerList.get(someObjectYoureShowingAMarkerFor.getId());
if(marker != null)
{
marker.showInfoWindow();
}
1
można użyć OnMarkerClickListener.
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Toast.makeText(getApplicationContext(), "Clicked a marker with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
Właśnie tego potrzebowałem, dzięki! – noisecapella