您的位置:首页 > 其它

关于百度地图marker的点击事件

2017-05-27 11:45 274 查看
在最开始学习使用百度地图,marker的点击事件,很容易实现点击弹出框;

像这样:

baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {

baiduMap.showInfoWindow(infoWindow);
return false;
}
});

这样的确是实现了点击事件,并弹出气泡框,没什么问题;可是问题出现在,当我的数据源会刷新的时候,就会出现问题了,当我刷新4次数据源之后,发现点击marker会出现明显的卡顿现象,最开始怀疑是弹出框的问题,后面排除了,怀疑是marker没有清除,所以就加上多个:
baiduMap.clear();


然而还是卡顿,百度一下说是set多次listener,所以就开始验证:

baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Log.e("MARKER","点击事件开始");
LocationBean useBean = (LocationBean) marker.getExtraInfo().getSerializable(AppCons.TEST_USE);   //读取存到marker里面的数据
position = marker.getExtraInfo().getInt("position");
getAdd(position, useBean);
Log.e("MARKER","点击事件结束");


果然。log打印:

05-27 11:52:18.163 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.173 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.173 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.173 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.173 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.183 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.183 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.183 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.183 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.193 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.193 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.193 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.193 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

05-27 11:52:18.203 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件开始

05-27 11:52:18.213 15287-15287/com.example.maptest.mycartest E/MARKER: 点击事件结束

所以的确是set之后没有移除;就自己在写一个listener实现点击事件:

private final class OnMarkerClickListeners implements BaiduMap.OnMarkerClickListener


在每次刷新的时候移除listener:

baiduMap.removeMarkerClickListener(onMarkerClickListener);


最后完美解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: