【问题标题】:Unable to get GoogleMap OnMarkerClickListener to work无法让 GoogleMap OnMarkerClickListener 工作
【发布时间】:2013-04-07 08:03:27
【问题描述】:
使用 V2 地图。
基本上一切正常,包括添加标记。
但是,我需要在点击标记时采取行动,所以我安装了一个处理程序:
thisMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override public boolean onMarkerClick(Marker marker) {
// Take some action here
return true;
}
}
);
唯一的问题是 - onMarkerClick() 根本不会被调用。看不到原因 - 在最初创建地图时尝试创建侦听器,并且在放置标记后也尝试创建侦听器,没有区别。
?
【问题讨论】:
标签:
android
google-maps
google-maps-markers
【解决方案1】:
这对我来说很好用:
GoogleMap mMap;
Marker marker_1;
初始化地图后,给它添加一个监听器。
mMap.setOnMarkerClickListener((OnMarkerClickListener) this);
并称之为
/**
* handle marker click event
*/
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Auto-generated method stub
if(marker.equals(marker_1)){
Log.w("Click", "test");
return true;
}
return false;
}
如果它返回“true”,则单击事件正在被正确处理。如果单击标记并返回false,它将像往常一样弹出信息窗口。
根据 Android 文档,如果侦听器已消费事件,则单击的标记返回 true
(即不应发生默认行为),
否则为假
(即,应该发生默认行为)。
默认行为是相机移动到地图和
信息窗口出现。
【解决方案2】:
你可以简单地使用这个片段:
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
GoogleMap mGoogleMap;
Marker marker_1;
在 onMapReady(GoogleMap googleMap) 中添加:
mGoogleMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Auto-generated method stub
if(marker.equals(marker_1)){
Log.w("Click", "test");
return true;
}
return false;
}
});
【解决方案3】:
设法通过使用 OnInfoWindowClickListener 来使其工作。不知道为什么它不会响应标记点击。
【解决方案4】:
谷歌地图mMap;
使用这个:
mMap.setOnMarkerClickListener((OnMarkerClickListener) this);
而不是
mMap.setOnMarkerClickListener(OnMarkerClickListener);