关于百度地图marker的点击事件
2017-05-27 11:45
274 查看
在最开始学习使用百度地图,marker的点击事件,很容易实现点击弹出框;
像这样:
这样的确是实现了点击事件,并弹出气泡框,没什么问题;可是问题出现在,当我的数据源会刷新的时候,就会出现问题了,当我刷新4次数据源之后,发现点击marker会出现明显的卡顿现象,最开始怀疑是弹出框的问题,后面排除了,怀疑是marker没有清除,所以就加上多个:
然而还是卡顿,百度一下说是set多次listener,所以就开始验证:
果然。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实现点击事件:
在每次刷新的时候移除listener:
最后完美解决
像这样:
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);
最后完美解决
相关文章推荐
- 关于在里的按钮点击之后不执行OnItemCommand事件,欢迎讨论
- 关于鼠标点击事件
- 关于页面上某些点击事件无效的问题
- 关于一些点击事件
- Android关于点击事件的特别处理
- 关于登录时输入信息以后敲回车触发登录按钮的点击事件
- 昨天的这个先补上--这个是关于 JQ 的移动 和 渐变特效的点击事件
- iOS 关于UIView的userInteractionEnabled属性(多层视图到点击事件)
- 关于启动Activity之间的及普通按钮的点击事件
- 关于iOS延时操作,阶段性总结(部分关于点击,双击事件冲突)
- jQuery中关于超链接click点击事件的注意点
- 关于listitem点击事件根据position取得数据库数据Onresume()更新Adapter后取得数据错误的问题
- highcharts报表关于series点击文本或者符号,都有触发事件或者都没有触发事件
- ios 关于 通过加载 xib 生成的view,调用 addsubviews,sub view的按钮 不相应点击事件的 问题
- 关于点击事件
- 关于对话框上的按钮不响应点击事件的问题
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- 关于Android中popupwindow的listview的item点击事件无效的解决方案
- 关于Linearlayout点击事件无效的问题