android中循环在百度地图上添加标注后,怎样实现点击每个标注获取相应信息
1个回答
2015-01-02 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517194
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
01.var map = new BMap.Map("Mapcontainer");
02. var JsonObj = eval(JsonStr);
03. if (JsonObj != null) {
04. for (var i = 0; i < JsonObj.length; i++) {
05. (function (x) {
06. var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude); // 创建点坐标
07. map.centerAndZoom(point, 13);
08. var marker = new BMap.Marker(point);
09. 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());
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]的内容了。
这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。
接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!
02. var JsonObj = eval(JsonStr);
03. if (JsonObj != null) {
04. for (var i = 0; i < JsonObj.length; i++) {
05. (function (x) {
06. var point = new BMap.Point(JsonObj[x].Visit_GPS_Longitude, JsonObj[x].Visit_GPS_Latitude); // 创建点坐标
07. map.centerAndZoom(point, 13);
08. var marker = new BMap.Marker(point);
09. 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());
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]的内容了。
这样虽然解决了问题,但是每添加一个点都会创建一个匿名函数,内存泄漏可能会是潜在隐患。
接下去, 我们就可以自由的在地图上标注点并显示对应的信息了!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询