存在多个marker时,点击第一个marker时,信息框出现在最后
来源:互联网 发布:开启数据漫游有什么用 编辑:程序博客网 时间:2024/06/02 04:30
1.当点击第一个marker的时候,信息框出现在最后一个marker上。
for (var i = 0; i < 5; i++) {var mkr = new BMap.Marker(new BMap.Point(120.170507 + i / 20, 30.276462), {//创建一个图标实例 icon: icon});mkr.addEventListener("click", function(){//这里用的是mkrmkr.openInfoWindow(new BMap.InfoWindow("一" + i, {width: 200,height: 0,title: "一" + i,enableMessage: false}));}); //在图标实例上添加鼠标点击事件 map.addOverlay(mkr); //将覆盖物添加到地图中,一个覆盖物实例只能向地图中添加一次 }
出现这个问题的原因是:
这5个marker身上注册的click事件其实都是最后一个的click事件。(原因看闭包)
所以,不管点击第几个marker,信息框都是在最后个marker上出现。
解决这个问题的方法是:
this.addEventListener("click", function(e){//将mkr改成this,表示每个click事件都是为当前图标注册的,避免了闭包原因让每个图标注册的都是最后个marker的click事件 searchInfoWindow.open(marker);});
2.但是此方法仅仅解决了为何点击第一个marker时,信息框出现在最后个marker的情况。而每个信息框里的内容相同的情况并没有解决。
解决这个问题需要用到闭包机制:
for (var i = 0; i < 5; i++) {var mkr = new BMap.Marker(new BMap.Point(120.170507 + i / 20, 30.276462), {//创建一个图标实例 icon: icon});(function(x){mkr.addEventListener("click", function(){//这里用的是mkrthis.openInfoWindow(new BMap.InfoWindow("一" + x, {width: 200,height: 0,title: "一" + x,enableMessage: false}));}); //在图标实例上添加鼠标点击事件 })(i);map.addOverlay(mkr); //将覆盖物添加到地图中,一个覆盖物实例只能向地图中添加一次 }
- 存在多个marker时,点击第一个marker时,信息框出现在最后
- 百度地图添加多个marker,给marker添加多个信息窗口
- 如何区分多个百度地图marker的点击事件
- Android百度地图(多个marker的点击事件)
- 百度地图 循环加载marker并添加多个信息窗口,解决只显示最后一个窗口信息的问题
- google maps V3 给多个marker添加infowindows信息
- 高德地图自定义Marker点击时出现的InfoWindow
- Android百度地图(清除多个Marker时,onMarkerClick方法执行多次)
- 高德地图 搜索以后 多个marker绑定点击事件 自定义窗口内容
- 分级marker,改进:点击marker时不刷新,移动地图时刷新
- [Asp.Net WinForm/Google]在Googel Map上放置多个Marker标记 /API3版
- 在Google Map中显示多个Marker并画出Polygon
- 高德地图多个Marker标记自动缩放全部显示在屏幕中
- 高德地图多个Marker标记自动缩放全部显示在屏幕中
- 高德地图多个Marker标记自动缩放全部显示在屏幕中
- google map 多 Marker 多个InfoWindow event
- 百度地图创建多个marker和监听事件
- 百度地图多个Marker点自适应屏幕
- 读取RTC时间
- init-method和destroy-method指定的方法是该类里的哪个方法初始化和那个方法是销毁
- (转)如何进行Android单元测试
- winform 记录
- 连接数据库的方式
- 存在多个marker时,点击第一个marker时,信息框出现在最后
- 日志文件管理
- internal、public、protected、private的区别于联系
- String.Split小记
- linux kernel structure
- 把pcDuino做成苹果 Siri 代理服务器实现智能家居控制
- libtar 使用范例
- HDU 1541 Stars (树状数组)
- “林中散步”的四步谈判法