百度地图中画了多个polyline,想在鼠标经过的时候弹出infowindow提示信息窗口,发现总是显示最后一个polyline的提示窗口。csdn中参考了
https://blog.csdn.net/zzq900503/article/details/22273507
等几个帖子,采用闭包的方式写代码,但总是实现不了,请各位大神不吝指教,谢谢!代码如下:
var content1 = "窗口显示字符内容1";
var content2 = "窗口显示字符内容2";
var content3 = "窗口显示字符内容3";var polyline1 = createPolyline( points1, ops1, content1);
var polyline2 = createPolyline( points2, ops2, content2);
var polyline3 = createPolyline( points3, ops3, content3);
map.addOverlay(polyline1);
map.addOverlay(polyline2);
map.addOverlay(polyline3);funciton createPolyline(points, ops, info_html) {
var _Polyline = new BMap.Polyline(points, ops);
_Polyline .addEventListener("mouseover",function(e) {
map.openInfoWindow(new BMap.InfoWindow(info_html, {width: 200, height: 110}), e.point); }
);
return _Polyline;
}
运行的时候,鼠标经过每个polyline的时候,弹出的提示窗口都是显示content3的内容,该怎么修改呢,谢谢!
https://blog.csdn.net/zzq900503/article/details/22273507
等几个帖子,采用闭包的方式写代码,但总是实现不了,请各位大神不吝指教,谢谢!代码如下:
var content1 = "窗口显示字符内容1";
var content2 = "窗口显示字符内容2";
var content3 = "窗口显示字符内容3";var polyline1 = createPolyline( points1, ops1, content1);
var polyline2 = createPolyline( points2, ops2, content2);
var polyline3 = createPolyline( points3, ops3, content3);
map.addOverlay(polyline1);
map.addOverlay(polyline2);
map.addOverlay(polyline3);funciton createPolyline(points, ops, info_html) {
var _Polyline = new BMap.Polyline(points, ops);
_Polyline .addEventListener("mouseover",function(e) {
map.openInfoWindow(new BMap.InfoWindow(info_html, {width: 200, height: 110}), e.point); }
);
return _Polyline;
}
运行的时候,鼠标经过每个polyline的时候,弹出的提示窗口都是显示content3的内容,该怎么修改呢,谢谢!
解决方案 »
- 在js文件中引入js文件
- 2000元求由HTTP报文还原html网页的程序
- javascript动态事件传值出问题请高手帮一下感谢
- javascript变量可以重复定义吗
- 如何将表格(包括里面的文字)旋转90度显示?
- 关于动态加入事件的问题,请高手解答._在线等待
- 关闭指定窗口的问题【第3帖】
- 问如何实现在线时间统计(只要没有关闭浏览器,时间都不能刷新)
- js怎么调出打开文件对话框,取得路径?
- 关于bootstrap fileinput使用form提交单个删除后提交到后台所有文件都被清空了(在线等急急急)
- 小萌新,求助前端大神啊,easyUI生成的datagrid与echarts生成的图形,在一个页面,使用icheck进行切换的问题??求助
- vscode 语法检查太严格怎么解决?
else
{
map.clearOverlays(); for(var i=0; i< ilen; i++)
{
g_lat.push(dataJson.data.devlist[i].lat);
g_lng.push(dataJson.data.devlist[i].lng);
console.log(" dataJson.data.devlist[i].lat==="+dataJson.data.devlist[i].lat);
console.log(" dataJson.data.devlist[i].lng==="+dataJson.data.devlist[i].lng);
var sContent = "<h4 style='margin:0 0 5px 0;padding:0.2em 0'>沪B67668</h4>"
+ "<img style='float:left;margin:4px' id='imgDemo' src='images/0.jpg' width='32' height='32'/>"
+ "<span>设备编号:"+deviceNumArr[i]+"</span></p>"
+ "<p style='margin:0;line-height:1.5;font-size:13px;'>上海市青浦区华丹路99号</p>"
+ "<hr>" + "<p><span style='padding-right:10px'>北纬:123.00</span>"
+ "<span>东经:12.3695</span></p>"
+ "<p><span style='padding-right:10px'>行驶方向:东南</span>"
+ "<span>速度:70公里/小时</span></p>" + "</div>";
var new_point = new BMap.Point(g_lng[g_lng.length-1], g_lat[g_lat.length-1]);
//map.centerAndZoom(new_point, 13);
locationer = new BMap.Marker(new_point); // 创建标注
var infoWindow = new BMap.InfoWindow(sContent); // 创建信息窗口对象
locationer.infoWindow=infoWindow;
map.addOverlay(locationer); //增加点
console.log(" fnLocationSuccCallBack add er");
var selIndex = document.getElementById("deviceno_input").selectedIndex;
if(document.getElementById("deviceno_input").options[selIndex].text != "所有设备")
{
if(1 == selectedChange)
{
//map.panTo(new_point);
map.centerAndZoom(new_point, 13);
selectedChange = 0;
}
}
console.log(" fnLocationSuccCallBack add er 2222");
// 增加 标记点击事件
locationer.addEventListener("click", function(e){
this.openInfoWindow(e.target.infoWindow);
document.getElementById('imgDemo').onload = function() {
infoWindow.redraw();
}
}); } drawEletricFence();
}
我的代码里是map.openInfoWindow,结果每次都是显示最后一个窗口的信息请指教,谢谢!
http://lbsyun.baidu.com/jsdemo.htm#d0_5