Android百度地圖onMarkerClick方法執行多次
阿新 • • 發佈:2019-01-27
最近在使用百度地圖時,要實現返回當前位置附近的Marker,然後給Marker新增點選事件,點選Marker彈出PopupWindow,每次重新整理地圖顯示新的Marker,使用bdMap.clear()重新整理失敗,原來的Marker還留在地圖上,點選Marker,會多次執行onMarkerClick方法,後來仔細閱讀百度地圖API,發現有個方法我沒做,就是removeMarkerClickListener。
原來新增Marker點選事件是這樣寫的:
bdMap.setOnMarkerClickListener(new bdMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
//在這裡我做了彈出PopupWindow
return false;
}
});
使用的是匿名內部類的方法實現點選事件,出現多次執行點選事件,建立多次PopupWindow。
修改方法:
自己寫一個listener實現點選事件:
BaiduMap.OnMarkerClickListener onMarkerClickListener = new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
//////
return false;
}
};
然後再刪除舊Marker,新增新Marker時,新增如下方法:
bdMap.removeMarkerClickListener(onMarkerClickListener);
bdMap.clear();
完美解決
設定地圖 Marker 覆蓋物點選事件監聽者,自3.4.0版本起可設定多個監聽物件,停止監聽時呼叫removeMarkerClickListener移除監聽物件
removeMarkerClickListener:
public final void removeMarkerClickListener(BaiduMap.OnMarkerClickListener listener)
移除一個地圖 Marker 覆蓋物點選事件監聽者
引數:
listener -OnMarkerClickListener