那个代码格式是这个论坛过滤了我的格式,我的代码格式好好的,发上去就乱了!!!!你这个(function(i){})(i);如何应用,能否放到一个JS函数function aaa(){}里面应用啊???而且,我试过了你这个(function(i){})(i);根本就没有对i进行i++的操作啊,还是应该写成(function(i){})(i++);,如何利用这种办法,实现for(var n=0;n<s.length;i++){}这个操作呢???如果把这个(function(i){})(i);放在一个JS函数外边,我真不知道怎么来调用了!!!我对JQuery的函数调用,不太熟悉,你知道吗,还有我在函数function addMapOverly(map){}里面定义的s数据,如何将数据的长度传入函数(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 1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1}); var 2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2});var 3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1}); var 4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2});var 5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1}); var 6 = 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 s = [1,2,3,4,5,6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12]; $(function(i){ map.addOverlay(s[i]); var Index = s[i]; s[i].addEventListener("click",function(e){ for(var n=0;n<s.length;i++){ if(n == i){ alert("i = " + i); // 当鼠标点击这个标示的时候,蓝色标示变为红色标示 map.addOverlay(changMark[i]); }else{ // 将没有点击的标示,所覆盖的红色标示删除掉 map.removeOverlay([n]); } } }); })(i); }
(function(i){})(i);就是给你在for循环中使用,解决for循环无作用域的问题用法:for(var i=0;i<xxx;i++) { (function(i){ //你的代码 })(i); } 这样i就可以受作用域保护,循环后function内部的i仍保持循环时的值谢谢你的回答了,你的回答,对我帮助很大!!!我还有一个问题,就是自定义坐标标示覆盖物,在放大和缩小地图的时候,坐标位置总是改变,这个你有办法解决吗???这些是坐标标示覆盖物的效果:以下是我的这个效果的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<s.length;i++){ // 将此标示放入地图 map.addOverlay(s[i]); //var Index = s[i]; (function(i){ s[i].addEventListener("click",function(e){ for(var j=0;j<s.length;j++){ if(j == i){ //alert("i = " + i); var n = j+1; doClick(n); // 当鼠标点击这个标示的时候,标示的颜色改 map.addOverlay(changeMarks[j]); }else{ map.removeOverlay(changeMarks[j]); } } }); })(i); }
以下是我的这个效果的全部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 1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1}); var 2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1}); var 3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1}); var 4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon2}); var 5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon2}); var 6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon2}); var 7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon2}); var 8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon2}); var 9 = new BMap.Marker(new BMap.Point(106.258806,38.289461),{icon:icon2}); var s = [1,2,3,4,5,6,7,8,9];//获得点击后的标示数组{ // 定义标示图片 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<s.length;i++){ // 将此标示放入地图 map.addOverlay(s[i]); //var Index = s[i]; (function(i){ s[i].addEventListener("click",function(e){ for(var j=0;j<s.length;j++){ if(j == i){ //alert("i = " + i); var n = j+1; doClick(n); // 当鼠标点击这个标示的时候,标示的颜色改 map.addOverlay(changeMarks[j]); }else{ map.removeOverlay(changeMarks[j]); } } }); })(i); }
//测试
alert("i = " + i);
// 当鼠标点击这个标示的时候,标示的颜色
//添加覆盖物
map.addOverlay(4);
//删除覆盖物
map.removeOverlay(2);
map.removeOverlay(6);
map.removeOverlay(point2);
map.removeOverlay(point4);
map.removeOverlay(point6);
map.removeOverlay(point8);
map.removeOverlay(point10);
map.removeOverlay(point12);
// 打开文件提示
showInfo(map);
});})(i);ps:发代码的时候注意格式弄好点
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 1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1});
var 2 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon2});var 3 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1});
var 4 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon2});var 5 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1});
var 6 = 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 s = [1,2,3,4,5,6,point1,point2,point3,point4,point5,point6,point7,point8,point9,point10,point11,point12]; $(function(i){
map.addOverlay(s[i]);
var Index = s[i];
s[i].addEventListener("click",function(e){
for(var n=0;n<s.length;i++){
if(n == i){
alert("i = " + i);
// 当鼠标点击这个标示的时候,蓝色标示变为红色标示
map.addOverlay(changMark[i]);
}else{
// 将没有点击的标示,所覆盖的红色标示删除掉
map.removeOverlay([n]);
}
}
});
})(i);
}
(function(i){
//你的代码
})(i);
}
这样i就可以受作用域保护,循环后function内部的i仍保持循环时的值
(function(i){
//你的代码
})(i);
}
这样i就可以受作用域保护,循环后function内部的i仍保持循环时的值谢谢你的回答了,你的回答,对我帮助很大!!!我还有一个问题,就是自定义坐标标示覆盖物,在放大和缩小地图的时候,坐标位置总是改变,这个你有办法解决吗???这些是坐标标示覆盖物的效果:以下是我的这个效果的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<s.length;i++){
// 将此标示放入地图
map.addOverlay(s[i]);
//var Index = s[i];
(function(i){
s[i].addEventListener("click",function(e){
for(var j=0;j<s.length;j++){
if(j == i){
//alert("i = " + i);
var n = j+1;
doClick(n);
// 当鼠标点击这个标示的时候,标示的颜色改
map.addOverlay(changeMarks[j]);
}else{
map.removeOverlay(changeMarks[j]);
}
}
});
})(i);
}
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 1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1});
var 2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1});
var 3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1});
var 4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon2});
var 5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon2});
var 6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon2});
var 7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon2});
var 8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon2});
var 9 = new BMap.Marker(new BMap.Point(106.258806,38.289461),{icon:icon2});
var s = [1,2,3,4,5,6,7,8,9];//获得点击后的标示数组{
// 定义标示图片
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<s.length;i++){
// 将此标示放入地图
map.addOverlay(s[i]);
//var Index = s[i];
(function(i){
s[i].addEventListener("click",function(e){
for(var j=0;j<s.length;j++){
if(j == i){
//alert("i = " + i);
var n = j+1;
doClick(n);
// 当鼠标点击这个标示的时候,标示的颜色改
map.addOverlay(changeMarks[j]);
}else{
map.removeOverlay(changeMarks[j]);
}
}
});
})(i);
}