我正在使用谷歌地图api和一些标记。我还覆盖了infoWindow,如下所示,以显示自定义文本。
public void setUpMap() {
final GoogleMap map = mMapView.getMap();
map.clear();
map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
private View mHolder;
@Override
public View getInfoWindow(final Marker marker) {
Log.d("MAP", "Map clicked on marker = " + maker);
etc....
这很好用,我点击时更改了每个标记的图标,使它们在视觉上被选中。但是,我想“取消选择”所有标记。问题是我不知道如何添加从标记之外触发的侦听器。
换句话说,只有触摸标记时,我的监听器“getInfoWindow”才会触发。我想要相反的。某种倾听者告诉我用户触摸了地图而不是标记。
这可以轻松完成吗?任何指针都非常感谢。
THX!
答案 0 :(得分:4)
好的,我认为这很容易。
您有OnMarkerClickListener
和OnMapClickListener
。
因此,在您的情况下,只需注册OnMapClickListener
,然后在onMapClick()
注册即可。
还有一件事 - 当您添加标记时,将它们存储在Arraylist
中 - 然后您可以随时执行任何操作 - 甚至从地图中删除所有标记。
答案 1 :(得分:0)
仅在使用信息窗口时才有用。 在我的例子中,当用户单击标记时,会出现相应的信息窗口。因此,当用户单击标记外的地图时,信息窗口将关闭,并且地图会检测到该事件。
// Detect when Marker's Info Window is closed
googleMap.setOnInfoWindowCloseListener(new GoogleMap.OnInfoWindowCloseListener() {
@Override
public void onInfoWindowClose(Marker marker) {
// Do whatever you want to do here...
}
});