调用百度地图API时如很根据不同的marker显示不同的信息窗口
如题我标记了800多个marker每个marker点击都会触发显示信息窗口的方法但是每个信息窗口的信息不同在显示信息窗口的方法中必须有一个语句searchInfoWind...
如题 我标记了800多个marker 每个marker点击都会触发显示信息窗口的方法 但是每个信息窗口的信息不同 在显示信息窗口的方法中必须有一个语句
searchInfoWindow.open(marker);
但是如果在该方法内创建marker对象就会覆盖掉之前的地图跟800多个marker 请问怎么做才能完成这个功能呢 额 说的有点乱 在线等 展开
searchInfoWindow.open(marker);
但是如果在该方法内创建marker对象就会覆盖掉之前的地图跟800多个marker 请问怎么做才能完成这个功能呢 额 说的有点乱 在线等 展开
1个回答
展开全部
兄弟我也遇到过你这样的问题,如果我没猜错。你的: searchInfoWindow.open(marker);应该是写到循环里面的吧,无论点击哪个标注,弹出来的信息窗口都是显示的最后一次循环定义的信息内容。
更多追问追答
追问
不 我这个是写在触发事件里面的 我循环里面是创建marker 然后每个marker定义一个click触发事件 你最后的解决方案是什么呀
追答
for(i=0;i<循环次数;i++){
var marker=new BMap.Marker(Point对象);//创建标注
var html='你自己的html';
var infoWindow = new BMap.InfoWindow(html);//创建窗口信息
marker.infoWindow=infoWindow;//给当前标注新增一个属性以便保存窗口信息infoWindow
marker.addEventListener("click", function(e){//添加标注的点击事件回调
this.openInfoWindow(e.target.infoWindow);//点击标注时,打开改标注对应的回调信息
//如果没猜错,你原来在这里的代码应该如下:
//this.openInfoWindow(infoWindow);
//那样就会导致每次标注点击后,弹出的窗口信息都是最后一次循环的infoWindow。
//因为在click的时候只会去找infoWindow这个变量值,而你的click肯定是在所有循环的
//标注都产生完之后,此时infoWindow变量已经被赋值成了最后一次循环的值。
});
map.addOverlay(marker);//添加标注到地图
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询