侦听器映射标记外的触摸
Listener to map touch outside of the markers
我正在使用带有一些标记的 google 地图 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....
这很好用,我在单击时更改了每个标记的图标,使它们在视觉上被选中。但是,我想 "unselect" 所有标记。问题是我不知道如何添加从标记外部触发的侦听器。
换句话说,我的侦听器 "getInfoWindow" 只有在触摸标记时才会触发。我想要相反的。某种侦听器告诉我用户触摸了地图而不是标记。
这容易做到吗?非常感谢任何指点。
谢谢!
好的,我想这真的很简单。
你有 OnMarkerClickListener
and OnMapClickListener
.
因此,在您的情况下,只需注册 OnMapClickListener
,然后在 onMapClick()
中,您可以做您需要的。
还有一件事 - 当你添加标记时,将它们存储在 Arraylist
- 然后你可以随时做任何需要的事情 - 甚至从地图上删除所有标记。
这仅在使用信息 Window 时有用。
在我的例子中,当用户单击标记时,会出现相应的信息 window。因此,当用户在标记外的地图中单击时,Info Window 关闭并且地图检测到该事件。
// 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...
}
});
我正在使用带有一些标记的 google 地图 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....
这很好用,我在单击时更改了每个标记的图标,使它们在视觉上被选中。但是,我想 "unselect" 所有标记。问题是我不知道如何添加从标记外部触发的侦听器。
换句话说,我的侦听器 "getInfoWindow" 只有在触摸标记时才会触发。我想要相反的。某种侦听器告诉我用户触摸了地图而不是标记。
这容易做到吗?非常感谢任何指点。
谢谢!
好的,我想这真的很简单。
你有 OnMarkerClickListener
and OnMapClickListener
.
因此,在您的情况下,只需注册 OnMapClickListener
,然后在 onMapClick()
中,您可以做您需要的。
还有一件事 - 当你添加标记时,将它们存储在 Arraylist
- 然后你可以随时做任何需要的事情 - 甚至从地图上删除所有标记。
这仅在使用信息 Window 时有用。 在我的例子中,当用户单击标记时,会出现相应的信息 window。因此,当用户在标记外的地图中单击时,Info Window 关闭并且地图检测到该事件。
// 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...
}
});