`
yidongkaifa
  • 浏览: 4064738 次
文章分类
社区版块
存档分类
最新评论

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

 
阅读更多

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

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

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

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

  var map = new BMap.Map("Mapcontainer");
                var JsonObj = eval(JsonStr);
                if (JsonObj != null) {
                    for (var i = 0; i < JsonObj.length; i++) {
                       (function (x) {
                           var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude);    // 创建点坐标
                           map.centerAndZoom(point, 13);
                           var marker = new BMap.Marker(point);
                           var opts = {
                               width: 250,     // 信息窗口宽度
                               height: 100,     // 信息窗口高度
                               title: '<span style="font-size:15px;color:#0A8021">' + JsonObj[x].CustomerName + '</span>'   // 信息窗口标题
                           }
                           //marker.setAnimation(BMAP_ANIMATION_BOUNCE);
                           var content = "进店时间 " + JsonObj[x].VisitBeginTime + "<br/>离店时间 " + JsonObj[x].VisitEndTime;
                           var info_Window = new BMap.InfoWindow(content, opts);  // 创建信息窗口对象
                           marker.addEventListener("click", function () {
                               this.openInfoWindow(info_Window);
                           });
                           map.addOverlay(marker);
                       })(i);
                    } 
                    map.addControl(new BMap.NavigationControl());  

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

但是传到闭包里面的值已经被保留,也就可以顺利拿到应该取到的address[i]的内容了。
这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。
接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!


分享到:
评论

相关推荐

    解决百度地图中多个标注的弹出信息框内容都一样的问题

    点击一个按钮“长沙市” 进去 希望在地图上显示出...标注可以循环添加多个 但是 那个弹出框却永远都是一个 也就是说 不管点击哪个标注 弹出的都是一个弹出框 显示的内容都是一样的。 给出这个问题的最终解决办法!!

    python实现简单图片物体标注工具

    对要标注的图像建立一个窗口循环,然后每次循环的时候对图像进行一次复制, 鼠标在画面上画框的操作、画好的框的相关信息在全局变量中保存, 并且在每个循环中根据这些信息,在复制的图像上重新画一遍,然后显示这份...

    python基于循环神经网络的情感分类系统.zip

    python基于循环神经网络的情感分类 python;django;mysql;RNN 本文主要基于循环神经网络,利用python语言...加入公告管理的功能,为系统提供一个推广宣传的窗口;最后加入用户管理的模块,进一步保障系统的安全性。

    Python tkinter实现图片标注功能(完整代码)

    不足之处为缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局。 Python tkinter实现图片标注代码,代码如下所述: #!/usr/bin/python # -*- coding: UTF-8 -*- import os import sys if sys....

    基于循环神经网络的语义完整性分析

    首先,对文本进行分词,映射为相应的词向量并进行标注,然后将词向量和标注信息通过循环窗口和欠采样方法处理后,作为循环神经网络的输入,经过训练最后得到模型.实验结果表明,该方法可以达到91.61%的准确率,为...

    IDL帮助(中文).doc

    非格式化数据文件的一些问题 144 用关联变量存取非格式化数据文件 144 读写常用文件格式的文件 147 创建彩色GIF文件 147 创建彩色JPEG文件 148 查询图像文件信息 150 第七章 图形硬拷贝输出 151 本章概要 151 选择...

    JavaScript网页特效范例宝典源码

    实例001 打开新窗口显示广告信息 2 实例002 定时打开窗口 4 实例003 通过按钮创建窗口 5 实例004 自动关闭的广告窗口 6 实例005 控制弹出窗口居中显示 7 实例006 弹出的窗口之Cookie控制 9 实例007 为弹出的窗口加入...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    (1)针对多窗口类浏览器模式问题,指出并分析了该问题存在的原因,利用Activity的运行机制,通过Fragment栈对主要模块的Webview进行管理,实现对不同模块之间切换的控制。 (2)针对跨域数据交互问题,指出并分析了...

    易语言程序免安装版下载

    修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲的问题。 8. 改进应用接口支持库中“设置屏幕分辨率”命令。 9. 修改外部数据库在“表中记录数为零”时可能导致程序崩溃的...

    串口猎人(Serial Hunter) v31.zip

    7、可以为收到的数据标注时间和来源。 8、可以自动比对发码区和收码区的数据是否一致(用于自发自收测试模式)。 9、收码区的内容,可以点击【转发】钮转到发码区。 10、可以在每次发码之前自动清除收码区。 二、...

    IDL入门教程.doc

    非格式化数据文件的一些问题 144 用关联变量存取非格式化数据文件 144 读写常用文件格式的文件 147 创建彩色GIF文件 147 创建彩色JPEG文件 148 查询图像文件信息 150 第七章 图形硬拷贝输出 151 本章概要 151 选择...

    ArcGIS Desktop开发人员指南.rar

    添加文本 标注到 活动视图..……………….. …………...……280 几何投影…………………….……………………………..….282 在状态栏显示栅格单元值....……………………………..… .284 导出当前视图……….....

    解析深度学习:语音识别实践

    13.4.3 将循环神经网络的学习转化为带约束的优化问题 200 13.4.4 一种用于学习RNN 的原始对偶方法201 13.5 结合长短时记忆单元(LSTM)的循环神经网络203 13.5.1 动机与应用203 13.5.2 长短时记忆单元的神经元...

    图像查看器 FastStone Image Viewer 7.5 中文多语版.zip

    FastStone Image Viewer的创新功能为直观的以全屏幕模式查看和浏览图片时可以同时显示并快速存取EXIF信息,当鼠标指向屏幕四角时会快速弹出图片的各种属性及图像处理应用。另外FastStone Image Viewer 支持无损JPEG...

    PLSQLDeveloper下载

    PL/SQL的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,它与C、 C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。本文主要介绍PL/SQL的编程基础,以使入门者对PL/SQL...

    从入门到精通HTML5——PDF——网盘链接

     3.5.1 文字标注标记——ruby 60  3.5.2 声明变量标记——var 61  3.5.3 忽视HTML标记  ——plaintext、xmp 62  3.6 小结 63  3.7 习题 63  第4章 使用列表 65  教学录像:35分钟  4.1 列表的标记 66  4.2...

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    注意,标注*的消息是子元素发送给父窗口的通知消息,其它的为窗口或者子元素自身的消息。 3.3.1 WM_PAINT WM_PAINT消息相信大家都很熟悉,一个窗口要重绘了,就会有一个WM_PAINT消息发送给窗口。 可以响应窗口的...

    串口猎人V31 串口猎人V31

    7、可以为收到的数据标注时间和来源。 8、可以自动比对发码区和收码区的数据是否一致(用于自发自收测试模式)。 9、收码区的内容,可以点击【转发】钮转到发码区。 10、可以在每次发码之前自动清除收码区。 二...

    Java典型模块

    18.2.1 实现显示文件信息的自定义窗口 18.2.2 自定义窗口的显示 18.3 知识点扩展——文件的操作和访问 18.3.1 通过FileOp类实现文件创建和删除功能 18.3.2 通过FileDir类实现列举文件和目录的功能 18.3.3 File类提供...

Global site tag (gtag.js) - Google Analytics