关闭

百度地图api开发一:信息窗口不能多次显示的问题

标签: 百度地图BMap.MarkerBMap.InfoWindow
1950人阅读 评论(0) 收藏 举报
分类:

笔者在使用百度地图API开发时,常遇到这样一个问题,即:给标注(Maker)添加的信息窗口只能显示一次,当第二次点击时窗口不显示。

源代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title></title>
<style type="text/css">
body{font-size:13px;margin:10px}
#container{width:500px;height:300px;border:1px solid gray}
</style>  
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
<script type="text/javascript">	
function init() {
	map = new BMap.Map("container");
	map.centerAndZoom(new BMap.Point(121.776817, 31.059342),15);			
	var html="Hello骨哥";
	var infoWindow = new BMap.InfoWindow(html);				
	var addr=new BMap.Marker(new BMap.Point(121.770996, 31.058476), {icon: new BMap.Icon("images/redstar.png", new BMap.Size(32, 32), {imageOffset: new BMap.Size(0, 0)})});			
	addr.infoWindow=infoWindow;
	addr.addEventListener("click", function(e){ 
	  this.openInfoWindow(e.target.infoWindow);  
	}); 
	map.addOverlay(addr);			
}
</script>
</head>    
<body onload="init();">  
	<div id="container"></div>
</body>  
</html>


运行结果如下图:


我为创建的标注addr添加了一个点击事件click,但当我第二次点击时,地图上不再显示信息窗口了。经过多番查找实验,下面给出两种解决办法:

方法一:

改写点击事件方法,代码为:

addr.addEventListener("click",function(){  
 this.openInfoWindow(infoWindow); 
});


该方法能够使信息框响应每一次的点击事件。但笔者并不建议这么写。

方法二:

第二种方法是升级百度api的版本,笔者原来使用的是V1.2版本,后来经过实验发现,当使用V1.5版本后就不再出现以上问题。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:136347次
    • 积分:2278
    • 等级:
    • 排名:第16560名
    • 原创:86篇
    • 转载:14篇
    • 译文:2篇
    • 评论:34条
    文章分类
    最新评论