利用百度地图API开发地图软件,在循环标示数组的时候,进入click监听器,每次输出循环遍历的i值的都是数组的长度,如何解决???

u011013470 2013-07-02 05:10:50
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body, html{width: 100%;height: 100%;overflow: hidden;margin:0;}
#allmap {width: 1000px;height: 800px;overflow: hidden;margin:0;border:1px solid #000000;position:relative;float:left;}
#info {position:relative;float:left;}
#l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
#r-result{height:100%;width:20%;float:left;}
</style>
<title>地址解析</title>
</head>
<body>
<div id="allmap"></div>
</body>
<script type="text/javascript">
function loadScript(){
var script = document.createElement("script");
//v1.5调用方法
script.src = "http://api.map.baidu.com/api?v=1.5&ak=9a67c9d7584fcc0b455e32a9fc4c3f22&callback=displayMap";
}

function displayMap(){
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.404556,39.915599);
map.centerAndZoom(point,13);
map.enableScrollWheelZoom();

//创建标示
addMapOverly(map);
}

//创建Mark标示
function addMapOverly(map){
// 定义标示图片
var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128));
var icon2 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128));
var icon3 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128));
var icon4 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128));

// 设置标示
var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1});
var mark2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2});

var mark3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1});
var mark4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2});

var mark5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1});
var mark6 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon2});

var point1 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon3});
var point2 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon4});

var point3 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon3});
var point4 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon4});

var point5 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon3});
var point6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon4});

var point7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon3});
var point8 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon4});

var point9 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon3});
var point10 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon4});

var point11 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon3});
var point12 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon4});

//将这些标示连接成数组进行操作
var marks = [mark1,mark2,mark3,mark4,mark5,mark6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12];
for(var i=0;i<marks.length;i++){
//alert("i = " + i);
// 标记移动功能
if(i % 2 == 0){
map.addOverlay(marks[i]);
}
if(i == 0){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色改

//添加覆盖物
map.addOverlay(mark2);
//删除覆盖物
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示框
showInfo(map);
});
} else if(i == 2) {
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(mark4);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 4) {
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(mark6);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 6){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point2);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 8){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point4);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 10){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point6);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 12){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point8);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 14){
//监听器
marks[i].addEventListener("click",function(e){
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point10);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});
} else if(i == 16){
//监听器
marks[i].addEventListener("click",function(e){
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(point12);
//删除覆盖物
map.removeOverlay(mark2);
map.removeOverlay(mark4);
map.removeOverlay(mark6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
// 打开文件提示
showInfo(map);
});
}
}
}

function showInfo(map){
var windows = {width:100,height:50,title:"天坛"}
var infoWindow = new BMap.InfoWindow("北京天坛",windows);
//打开窗口的方式
map.openInfoWindow(infoWindow,map.getCenter());
}

//页面加载完成后创建script引用
window.onload=loadScript;
</script>
</html>

以下是我的地图特效演示
















利用百度地图API开发地图软件,在循环标示数组的时候,进入click监听器,每次输出循环遍历的i值的都是数组的长度i=18,按照正常的逻辑,监听器里面的i应该是循环到点击到的marks[i]的这个i值啊???

这个和JS监听器有什么关系吗???

真不知道,不知道这个问题如何解决???

所以,我无法使用循环遍历的marks[i]对点击和没有点击的标示进行判断,所有,每次都要将所有的没有点击的标示都除掉红色点解的覆盖物。

请做过网上电子地图开发的高手,给一些指点,谢谢各位了!!!


...全文
249 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
尾巴尾巴呀 2014-11-30
  • 打赏
  • 举报
回复
我想问一下如何对panel里结果集做出点击的时候出现自定义的效果而不是它自带的信息框?
u011013470 2013-07-04
  • 打赏
  • 举报
回复
以下是我的这个效果的全部JS代码,不知道如何固定坐标啊,在放大和做小地图的时候,标示的坐标位置总是在变 var map = new BMap.Map("allmap"); var point = new BMap.Point(105.955754,36.525109); map.centerAndZoom(point,8); map.enableScrollWheelZoom(); //获得原标示数组 // 定义标示图片 var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128)); var icon2 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128)); // 设置标示 var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1}); var mark2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1}); var mark3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1}); var mark4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon2}); var mark5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon2}); var mark6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon2}); var mark7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon2}); var mark8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon2}); var mark9 = new BMap.Marker(new BMap.Point(106.258806,38.289461),{icon:icon2}); var marks = [mark1,mark2,mark3,mark4,mark5,mark6,mark7,mark8,mark9]; //获得点击后的标示数组{ // 定义标示图片 var changeIcon1 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128)); var changeIcon2 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128)); // 设置标示 var changeMark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:changeIcon1}); var changeMark2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:changeIcon1}); var changeMark3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:changeIcon1}); var changeMark4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:changeIcon2}); var changeMark5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:changeIcon2}); var changeMark6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:changeIcon2}); var changeMark7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:changeIcon2}); var changeMark8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:changeIcon2}); var changeMark9 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:changeIcon2}); var changeMarks = [changeMark1,changeMark2,changeMark3,changeMark4,changeMark5,changeMark6,changeMark7,changeMark8,changeMark9]; //创建Mark标示 for(var i=0;i<marks.length;i++){ // 将此标示放入地图 map.addOverlay(marks[i]); //var markIndex = marks[i]; (function(i){ marks[i].addEventListener("click",function(e){ for(var j=0;j<marks.length;j++){ if(j == i){ //alert("i = " + i); var n = j+1; doClick(n); // 当鼠标点击这个标示的时候,标示的颜色改 map.addOverlay(changeMarks[j]); }else{ map.removeOverlay(changeMarks[j]); } } }); })(i); }
u011013470 2013-07-04
  • 打赏
  • 举报
回复
引用 3 楼 wzs_xyz 的回复:
[quote=引用 2 楼 u011013470 的回复:]
那个代码格式是这个论坛过滤了我的格式,我的代码格式好好的,发上去就乱了!!!!

你这个(function(i){})(i);如何应用,能否放到一个JS函数function aaa(){}里面应用啊???

而且,我试过了你这个(function(i){})(i);根本就没有对i进行i++的操作啊,还是应该写成(function(i){})(i++);,如何利用这种办法,实现for(var n=0;n<marks.length;i++){}这个操作呢???

如果把这个(function(i){})(i);放在一个JS函数外边,我真不知道怎么来调用了!!!

我对JQuery的函数调用,不太熟悉,你知道吗,还有我在函数function addMapOverly(map){}里面定义的marks数据,如何将mark数据的长度传入函数(function(i){})(i);当中呢???

下面是我利用你写的这个函数,重新改了我的例子,但是整个地图都没有实现初始化,地图里面是空的!!!

请问,我这个例子应该如何修改???

//创建Mark标示
function addMapOverly(map){
// 定义标示图片
var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128));
var icon2 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128));
var icon3 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128));
var icon4 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128));

// 设置标示
var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1});
var mark2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2});

var mark3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1});
var mark4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2});

var mark5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1});
var mark6 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon2});

var point1 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon3});
var point2 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon4});

var point3 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon3});
var point4 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon4});

var point5 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon3});
var point6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon4});

var point7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon3});
var point8 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon4});

var point9 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon3});
var point10 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon4});

var point11 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon3});
var point12 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon4});

//将这些标示连接成数组进行操作
var marks = [mark1,mark2,mark3,mark4,mark5,mark6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12];

$(function(i){
map.addOverlay(marks[i]);
var markIndex = marks[i];
marks[i].addEventListener("click",function(e){
for(var n=0;n<marks.length;i++){
if(n == i){
alert("i = " + i);
// 当鼠标点击这个标示的时候,蓝色标示变为红色标示
map.addOverlay(changMark[i]);
}else{
// 将没有点击的标示,所覆盖的红色标示删除掉
map.removeOverlay(mark[n]);
}
}
});
})(i);
}

(function(i){})(i);就是给你在for循环中使用,解决for循环无作用域的问题

用法:

for(var i=0;i<xxx;i++) {
(function(i){
//你的代码
})(i);
}
这样i就可以受作用域保护,循环后function内部的i仍保持循环时的值[/quote]



谢谢你的回答了,你的回答,对我帮助很大!!!

我还有一个问题,就是自定义坐标标示覆盖物,在放大和缩小地图的时候,坐标位置总是改变,这个你有办法解决吗???

这些是坐标标示覆盖物的效果:











以下是我的这个效果的JS代码,不知道如何固定坐标啊,在放大和做小地图的时候,标示的坐标位置总是在变

var map = new BMap.Map("allmap");
var point = new BMap.Point(105.955754,36.525109);
map.centerAndZoom(point,8);
map.enableScrollWheelZoom();

//创建Mark标示
for(var i=0;i<marks.length;i++){
// 将此标示放入地图
map.addOverlay(marks[i]);
//var markIndex = marks[i];
(function(i){
marks[i].addEventListener("click",function(e){
for(var j=0;j<marks.length;j++){
if(j == i){
//alert("i = " + i);
var n = j+1;
doClick(n);
// 当鼠标点击这个标示的时候,标示的颜色改
map.addOverlay(changeMarks[j]);
}else{
map.removeOverlay(changeMarks[j]);
}
}
});
})(i);
}
未知数 2013-07-03
  • 打赏
  • 举报
回复
引用 2 楼 u011013470 的回复:
那个代码格式是这个论坛过滤了我的格式,我的代码格式好好的,发上去就乱了!!!! 你这个(function(i){})(i);如何应用,能否放到一个JS函数function aaa(){}里面应用啊??? 而且,我试过了你这个(function(i){})(i);根本就没有对i进行i++的操作啊,还是应该写成(function(i){})(i++);,如何利用这种办法,实现for(var n=0;n<marks.length;i++){}这个操作呢??? 如果把这个(function(i){})(i);放在一个JS函数外边,我真不知道怎么来调用了!!! 我对JQuery的函数调用,不太熟悉,你知道吗,还有我在函数function addMapOverly(map){}里面定义的marks数据,如何将mark数据的长度传入函数(function(i){})(i);当中呢??? 下面是我利用你写的这个函数,重新改了我的例子,但是整个地图都没有实现初始化,地图里面是空的!!! 请问,我这个例子应该如何修改??? //创建Mark标示 function addMapOverly(map){ // 定义标示图片 var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128)); var icon2 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128)); var icon3 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128)); var icon4 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128)); // 设置标示 var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1}); var mark2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2}); var mark3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1}); var mark4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2}); var mark5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1}); var mark6 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon2}); var point1 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon3}); var point2 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon4}); var point3 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon3}); var point4 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon4}); var point5 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon3}); var point6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon4}); var point7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon3}); var point8 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon4}); var point9 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon3}); var point10 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon4}); var point11 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon3}); var point12 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon4}); //将这些标示连接成数组进行操作 var marks = [mark1,mark2,mark3,mark4,mark5,mark6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12]; $(function(i){ map.addOverlay(marks[i]); var markIndex = marks[i]; marks[i].addEventListener("click",function(e){ for(var n=0;n<marks.length;i++){ if(n == i){ alert("i = " + i); // 当鼠标点击这个标示的时候,蓝色标示变为红色标示 map.addOverlay(changMark[i]); }else{ // 将没有点击的标示,所覆盖的红色标示删除掉 map.removeOverlay(mark[n]); } } }); })(i); }
(function(i){})(i);就是给你在for循环中使用,解决for循环无作用域的问题 用法: for(var i=0;i<xxx;i++) { (function(i){ //你的代码 })(i); } 这样i就可以受作用域保护,循环后function内部的i仍保持循环时的值
u011013470 2013-07-03
  • 打赏
  • 举报
回复
那个代码格式是这个论坛过滤了我的格式,我的代码格式好好的,发上去就乱了!!!! 你这个(function(i){})(i);如何应用,能否放到一个JS函数function aaa(){}里面应用啊??? 而且,我试过了你这个(function(i){})(i);根本就没有对i进行i++的操作啊,还是应该写成(function(i){})(i++);,如何利用这种办法,实现for(var n=0;n<marks.length;i++){}这个操作呢??? 如果把这个(function(i){})(i);放在一个JS函数外边,我真不知道怎么来调用了!!! 我对JQuery的函数调用,不太熟悉,你知道吗,还有我在函数function addMapOverly(map){}里面定义的marks数据,如何将mark数据的长度传入函数(function(i){})(i);当中呢??? 下面是我利用你写的这个函数,重新改了我的例子,但是整个地图都没有实现初始化,地图里面是空的!!! 请问,我这个例子应该如何修改??? //创建Mark标示 function addMapOverly(map){ // 定义标示图片 var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128)); var icon2 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128)); var icon3 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128)); var icon4 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128)); // 设置标示 var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1}); var mark2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2}); var mark3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1}); var mark4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2}); var mark5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1}); var mark6 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon2}); var point1 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon3}); var point2 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon4}); var point3 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon3}); var point4 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon4}); var point5 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon3}); var point6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon4}); var point7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon3}); var point8 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon4}); var point9 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon3}); var point10 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon4}); var point11 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon3}); var point12 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:icon4}); //将这些标示连接成数组进行操作 var marks = [mark1,mark2,mark3,mark4,mark5,mark6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12]; $(function(i){ map.addOverlay(marks[i]); var markIndex = marks[i]; marks[i].addEventListener("click",function(e){ for(var n=0;n<marks.length;i++){ if(n == i){ alert("i = " + i); // 当鼠标点击这个标示的时候,蓝色标示变为红色标示 map.addOverlay(changMark[i]); }else{ // 将没有点击的标示,所覆盖的红色标示删除掉 map.removeOverlay(mark[n]); } } }); })(i); }
未知数 2013-07-02
  • 打赏
  • 举报
回复
for没有作用域 改法: (function(i){ marks[i].addEventListener("click",function(e){ //测试 alert("i = " + i); // 当鼠标点击这个标示的时候,标示的颜色 //添加覆盖物 map.addOverlay(mark4); //删除覆盖物 map.removeOverlay(mark2); map.removeOverlay(mark6); map.removeOverlay(point2); map.removeOverlay(point4); map.removeOverlay(point6); map.removeOverlay(point8); map.removeOverlay(point10); map.removeOverlay(point12); // 打开文件提示 showInfo(map); }); })(i); ps:发代码的时候注意格式弄好点

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧