加载 Google 地图时打开信息窗口

3D-*_*tiv 0 javascript google-maps google-maps-api-3

我想知道是否可以在页面加载时打开附加到下面代码中每个标记的 infoWindow 对象之一,而不仅仅是单击它们?现在,用户必须单击其中一个标记才能打开信息窗口。

我测试创建一个“独立”信息窗口对象并在加载时打开良好,但当我单击其他一些标记时它没有关闭,因为 onClick 函数附加到只能关闭信息窗口的标记附加到该对象。如果我错了,正确的医学?

这可能吗?我可以通过号码“调用”对象吗?或者我有什么选择?提示很有价值!

或者,如果可能的话,我尝试在加载时打开一个单独的信息窗口,并且如果我打开其他信息窗口之一,就能够关闭该窗口!?

var map = null;
var infowindow = new google.maps.InfoWindow();
var iconBase = 'images/mapNumbers/number';
//var zoomLevel = 11;
//var mapPositionLat = 55.678939;
//var mapPositionLng =  12.568359;

function initialize() {

var markerPos = new google.maps.LatLng(55.674196574861895, 12.583808898925781);

var myOptions = {
zoom: 11,
//center: new google.maps.LatLng(55.678939, 12.568359),
center: markerPos,
mapTypeId: google.maps.MapTypeId.ROADMAP
 }

 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

 google.maps.event.addListener(map, 'click', function () {
 infowindow.close();
 });

 google.maps.event.addListener(map, 'zoom_changed', function () {
 infowindow.close();
 });

 google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(markerPos);
map.setZoom(zoomLevel);
//var center = map.getCenter();
 });

// Add markers to the map
var point;
point = new google.maps.LatLng(55.667093,12.581255); createMarker(point, "<div class='infoWindow'>1</div>");
point = new google.maps.LatLng(55.660794,12.58972); createMarker(point, "<div class='infoWindow'>2</div>");
point = new google.maps.LatLng(55.660491,12.587087); createMarker(point, "<div class='infoWindow'>3</div>");
  }

 // Create markers
  function createMarker(latlng, html, name, number) {
var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    title: name,
    icon: iconBase + number + '.png'
});

google.maps.event.addListener(marker, 'click', function () {
    infowindow.setContent(html);
    infowindow.open(map, marker);
    //map.setCenter(marker.getPosition());
    map.setCenter(55.678939, 12.568359); 
});
}

 google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)

Vad*_*hev 5

为了InfoWindow在地图加载时显示,请调用

infowindow.open(map, marker);
Run Code Online (Sandbox Code Playgroud)

在标记侦听器之外。

下面是演示createMarker函数,其中参数displayInfoWindow定义了地图加载时是否显示InfoWindow:

// Create marker
function createMarker(map,markerPos, markerTitle,infoWindowContent,displayInfoWindow) {
  var marker = new google.maps.Marker({
      position: markerPos,
      map: map,
      title: markerTitle,
  });

  var infowindow = new google.maps.InfoWindow({
      content: infoWindowContent
  });

  if(displayInfoWindow) {
     infowindow.open(map, marker);
  }
  google.maps.event.addListener(marker, 'click', function () {
     infowindow.open(map, marker); 
  });  
}
Run Code Online (Sandbox Code Playgroud)

示例: http: //jsbin.com/lusuquwu/1/