点击地图打开信息窗示例

地图有一个默认的逻辑,点击空白的地方时关闭正在打开的信息窗。
如果需要在点击的位置打开一个信息窗,怎么办呢?
试试点击按钮后,点击地图空白区域,看看有什么不同:

关键代码

 var infowindow = new sogou.maps.InfoWindow({
        content: contentString
		//初始化时设置点击地图空白地方不关闭信息窗
		,disableMapClickClose:true
		,title:"在初始化时设置信息窗标题"
    });
	//点击地图时显示在点击位置显示此marker
    var marker = new sogou.maps.Marker({
        map: map
		//,title:"marker的标题,会覆盖信息窗标题"
    });
    sogou.maps.event.addListener(map, 'click', function(a) {
	  marker.setPosition(a.point);
      infowindow.open(map,marker);
    });

	window.clickButton=function(a)
	{
		//设置点击地图空白地方是否关闭信息窗,true为不关闭,false为关闭
		infowindow.setDisableMapClickClose(a);
	};
    

完整代码

<!DOCTYPE html>
  <html>
  <head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
  <meta http-equiv="content-type" content="text/html; charset=gb2312"/>
  <title>搜狗地图 JavaScript API 示例: 点击地图打开信息窗示例</title>
  <style type="text/css">
  html {height: auto;}
  body {height: auto;margin: 0;padding: 0;}
  #map_canvas {width:1000px;height: 500px;position: absolute;}
  @media print {#map_canvas {height: 950px;}}
  </style>
  <script type="text/javascript" src="//api.go2map.com/maps/js/api_v2.5.1.js"></script>
  <script type="text/javascript">
  /**
  * 点击地图打开信息窗示例
  * 地图有一个默认的逻辑,点击空白的地方时关闭正在打开的信息窗。
  *	如果需要在点击的位置打开一个信息窗,怎么办呢?
  * 
  */
  function initialize() {
  var myLatlng = new sogou.maps.LatLng(39.992792,116.326142);
  var myOptions = {
  zoom: 15,
  center: myLatlng,
  mapTypeId: sogou.maps.MapTypeId.ROADMAP
  }
 var map = new sogou.maps.Map(document.getElementById("map_canvas"), myOptions);
 var contentString = '<div id="content">'+
  '<div id="siteNotice">'+
  '</div>'+
  '<h1 id="firstHeading" class="firstHeading">点击地图不关闭信息窗</h1>'+
  '<div id="bodyContent">'+
  '<p>您点击了这个位置,关于这个位置的信息可以显示在信息窗中。'+
  '</p>'+
  '</div>'+
  '</div>';
  
  var infowindow = new sogou.maps.InfoWindow({
  content: contentString
  //初始化时设置点击地图空白地方不关闭信息窗
  ,disableMapClickClose:true
  ,title:"在初始化时设置信息窗标题"
  });
  //点击地图时显示在点击位置显示此marker
  var marker = new sogou.maps.Marker({
  map: map
  //,title:"marker的标题,会覆盖信息窗标题"
  });
  sogou.maps.event.addListener(map, 'click', function(a) {
  marker.setPosition(a.point);
  infowindow.open(map,marker);
  });
 window.clickButton=function(a)
  {
  //设置点击地图空白地方是否关闭信息窗,true为不关闭,false为关闭
  infowindow.setDisableMapClickClose(a);
  };
  }
</script>
  </head>
  <body onload="initialize()">
  地图有一个默认的逻辑,点击空白的地方时关闭正在打开的信息窗。<br />
  如果需要在点击的位置打开一个信息窗,怎么办呢?<br />
  试试点击按钮后,点击地图空白区域,看看有什么不同:
  <input type="button" value="点击地图空白地方不关闭信息窗" onclick="clickButton(true)" />
  <input type="button" value="点击地图空白地方关闭信息窗" onclick="clickButton(false)" />
  <div id="map_canvas"></div>
  </body>
  </html>


运行代码