百度地图api不能为每个标注添加自己的事件处理吗? 5

varmap=newBMap.Map("container");varpoint;varmyArray=newArray()for(vari=1;i<10;i++){po... var map = new BMap.Map("container");
var point;
var myArray=new Array()
for(var i=1;i<10;i++)
{
point = new BMap.Point(116.404+(i/1000), 39.915+(i/1000));
myArray[i]=point;
}
map.centerAndZoom(point, 15);
map.addControl(new BMap.NavigationControl()); //导航
var marker;
for(var j=1;j<10;j++){
marker = new BMap.Marker(myArray[j]); // 创建标注
marker.addEventListener("click",function(){
marker.openInfoWindow(new BMap.InfoWindow(i));
//this.openInfoWindow(new BMap.InfoWindow(i)); 这样效果一样的

});
marker.setLabel(new BMap.Label("我是百度,呵呵",{offset:new BMap.Size(10,-40)}));
map.addOverlay(marker);
} // 将标注添加到地图中

显示信息窗口值都为10,说明前面9个marker的事件被覆盖,怎样才能为每个marker添加自己的事件处理内容而不被其他的覆盖呢?
展开
 我来答
没有现金的富人
2010-05-13
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
我修改了一下你的代码,用函数就可以了

var map = new BMap.Map("container");
var point;
var myArray=new Array()
for(var i=1;i<10;i++)
{
point = new BMap.Point(116.404+(i/1000), 39.915+(i/1000));
myArray[i]=point;
}
map.centerAndZoom(point, 15);
map.addControl(new BMap.NavigationControl()); //导航
var marker;
for(var j=1;j<10;j++){

addMarker(j);

} // 将标注添加到地图中

function addMarker(k){

marker = new BMap.Marker(myArray[k]); // 创建标注
map.addOverlay(marker);

var infoWindow = new BMap.InfoWindow(k); // 创建信息窗口对象

marker.addEventListener("click", function(){
this.openInfoWindow(infoWindow);
});
marker.setLabel(new BMap.Label("我是百度,呵呵",{offset:new BMap.Size(10,-40)}));
}
jenryhi
2010-05-13 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:88万
展开全部
for(var j=1;j<10;j++){
marker = new BMap.Marker(myArray[j]); // 创建标注
var n = i;
marker.addEventListener("click",(function(){
return function(n){

marker.openInfoWindow(new BMap.InfoWindow(n));

}
})());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式