地图开发添加标注物

简介: 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: [javascript] view plaincopy var map = new BMap.Map("Mapcontainer");                var JsonObj = eval(JsonStr);                if (J

最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下:

[javascript] view plain copy
  1. var map = new BMap.Map("Mapcontainer");  
  2.               var JsonObj = eval(JsonStr);  
  3.               if (JsonObj != null) {  
  4.                   for (var i = 0; i < JsonObj.length; i++) {  
  5.                          var point = new BMap.Point(JsonObj[i].Visit_GPS_Longitude, JsonObj[i].Visit_GPS_Latitude);    // 创建点坐标  
  6.                          map.centerAndZoom(point, 13);  
  7.                          var marker = new BMap.Marker(point);  
  8.                          var opts = {  
  9.                              width: 250,     // 信息窗口宽度  
  10.                              height: 100,     // 信息窗口高度  
  11.                              title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[i].CustomerName + '</span>'   // 信息窗口标题  
  12.                          }  
  13.                          //marker.setAnimation(BMAP_ANIMATION_BOUNCE);  
  14.                          var content = "进店时间 " + JsonObj[i].VisitBeginTime + "<br/>离店时间 " + JsonObj[i].VisitEndTime;  
  15.                          var info_Window = new BMap.InfoWindow(content, opts);  // 创建信息窗口对象  
  16.                          marker.addEventListener("click"function () {  
  17.                              this.openInfoWindow(info_Window);  
  18.                          });  
  19.                          map.addOverlay(marker);   
  20.                   }   
  21.                   map.addControl(new BMap.NavigationControl());   

这样子确实能添加标注,也弹出信息窗口,但是问题来了!弹出 的信息窗口没有变化,也就是说本来不同的标注上弹出 的信息窗口应该是不一样的,可以不知道怎么回事

弹出的信息窗口一直是最后的那个信息窗口!折腾了好久,最后终于解决了,具体的代码如下:

[javascript] view plain copy
  1. var map = new BMap.Map("Mapcontainer");  
  2.               var JsonObj = eval(JsonStr);  
  3.               if (JsonObj != null) {  
  4.                   for (var i = 0; i < JsonObj.length; i++) {  
  5.                      (function (x) {  
  6.                          var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude);    // 创建点坐标  
  7.                          map.centerAndZoom(point, 13);  
  8.                          var marker = new BMap.Marker(point);  
  9.                          var opts = {  
  10.                              width: 250,     // 信息窗口宽度  
  11.                              height: 100,     // 信息窗口高度  
  12.                              title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x].CustomerName + '</span>'   // 信息窗口标题  
  13.                          }  
  14.                          //marker.setAnimation(BMAP_ANIMATION_BOUNCE);  
  15.                          var content = "进店时间 " + JsonObj[x].VisitBeginTime + "<br/>离店时间 " + JsonObj[x].VisitEndTime;  
  16.                          var info_Window = new BMap.InfoWindow(content, opts);  // 创建信息窗口对象  
  17.                          marker.addEventListener("click"function () {  
  18.                              this.openInfoWindow(info_Window);  
  19.                          });  
  20.                          map.addOverlay(marker);  
  21.                      })(i);  
  22.                   }   
  23.                   map.addControl(new BMap.NavigationControl());    

同样是一个循环,但是在循环中使用了一个匿名函数,从而造成一个闭包将 i 的值锁定在里面,这样外部的值已经变化,

但是传到闭包里面的值已经被保留,也就可以顺利拿到应该取到的address[i]的内容了。
这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。
接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!
目录
相关文章
|
数据处理 Python
doccano数据标注平台搭建
基于阿里云服务器ESC示例,搭建doccano数据标注平台
|
5月前
如何批量制作一物一码标签?
许多行业存在为人员、物品、设备等做一物一码标签的需求,可使用草料标签制作功能。直接选择标签样式,填入数据,即可批量生成标签,还可批量排版,更易落地。还可保存标签样式,后续多次复用样式,批量制作标签。
|
9月前
|
搜索推荐 数据可视化 JavaScript
数据可视化大屏百度地图绘制行政区域标注实战案例解析(个性化地图、标注、视频、控件、定位、检索)
数据可视化大屏百度地图绘制行政区域标注实战案例解析(个性化地图、标注、视频、控件、定位、检索)
133 1
|
9月前
|
定位技术 数据格式 容器
腾讯位置服务富文本标签实现行政区域标注点聚合的解决方案
腾讯位置服务富文本标签实现行政区域标注点聚合的解决方案
71 0
|
10月前
|
数据可视化 C++
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
762 0
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
11月前
|
计算机视觉
ELITE项目原作解读:基于扩散模型的快速定制化图像生成
ELITE项目原作解读:基于扩散模型的快速定制化图像生成
|
11月前
|
机器学习/深度学习 人工智能 计算机视觉
华南理工TANGO项目原作解读: 文本驱动的三维物体风格化模型
华南理工TANGO项目原作解读: 文本驱动的三维物体风格化模型
121 0
|
11月前
|
机器学习/深度学习 自然语言处理 PyTorch
华人一作统一「视觉-语言」理解与生成:一键生成图像标注,完成视觉问答,Demo可玩
华人一作统一「视觉-语言」理解与生成:一键生成图像标注,完成视觉问答,Demo可玩
171 0
|
PyTorch 算法框架/工具 计算机视觉

热门文章

最新文章