百度地图点聚合中marker的infowindow消失的问题
2017-03-22 10:17
351 查看
目前的业务场景是:地图中有多个点的点聚合,聚合点展开后,每个marker有自己的点击事件,点击时显示窗口信息。
做法是marker.openInfoWindow(infowin);
问题来了,每次点击时地图会自动将窗口平移到地图中心,这时窗口就消失了。
后调查发现,地图平移,缩放等操作会触发点聚合的重绘事件,重绘时markers中没有保存infowindow等信息,所以会被覆盖掉。
尝试在重绘时恢复infowindow,但是效果并不理想,会出现闪动的情况,遂放弃。
仔细看了下百度的文档发现infowindow有两种方式
1.在marker上添加infoWindow即做法是marker.openInfoWindow(infowin);
2.在map上绑定:map.openInfoWindow(infowin,point);
第二种方式会解决点聚合重绘覆盖infoWindow的问题,因为map对象只有一个而点聚合的markerClusterer每次都是new出来的。
但是,这里有个关闭事件的问题:通过marker绑定的infoWindow可以通过infowindowclose事件来处理关闭逻辑。但map上绑定infowindow是没有关闭事件的监听函数的。
这时需要通过infoWindow自己的close事件来处理关闭逻辑
这样结合map.openInfoWindow(infowin,point);和InfoWindow的close事件可完美解决聚合点中显示信息窗口的问题
做法是marker.openInfoWindow(infowin);
问题来了,每次点击时地图会自动将窗口平移到地图中心,这时窗口就消失了。
后调查发现,地图平移,缩放等操作会触发点聚合的重绘事件,重绘时markers中没有保存infowindow等信息,所以会被覆盖掉。
尝试在重绘时恢复infowindow,但是效果并不理想,会出现闪动的情况,遂放弃。
仔细看了下百度的文档发现infowindow有两种方式
1.在marker上添加infoWindow即做法是marker.openInfoWindow(infowin);
2.在map上绑定:map.openInfoWindow(infowin,point);
第二种方式会解决点聚合重绘覆盖infoWindow的问题,因为map对象只有一个而点聚合的markerClusterer每次都是new出来的。
但是,这里有个关闭事件的问题:通过marker绑定的infoWindow可以通过infowindowclose事件来处理关闭逻辑。但map上绑定infowindow是没有关闭事件的监听函数的。
这时需要通过infoWindow自己的close事件来处理关闭逻辑
var infoWindow = new BMap.InfoWindow(content, opts); infoWindow.addEventListener("close", function () { that.clearOverlaysInParking(); });
这样结合map.openInfoWindow(infowin,point);和InfoWindow的close事件可完美解决聚合点中显示信息窗口的问题
相关文章推荐
- [原]解决百度地图多个Marker和InfoWindow时总是打开最后一个InfoWindow的问题
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 调用百度地图API添加点聚合时,marker标注的label标签刷新丢失问题
- Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用
- Android百度地图添加Marker失真问题的解决方案
- 关于百度地图(四):点聚合及只显示屏幕范围内的marker
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 关于地图marker的聚合问题
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- android百度地图 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 百度地图动态添加marker的图片显示问题
- BaiduMap---百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- 百度地图 点聚合 maker 定时刷新。。时间久后的卡顿问题解决
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用