Google地方标记信息窗口

时间:2019-01-25 20:56:07

标签: javascript google-maps

我正在尝试在可捕获坐标的Google Map上放置标记(如下所示)。代码工作正常,当单击地图时,我可以获得带有信息窗口的标记,该标记随坐标信息自动打开。但是,我关闭它后无法重新打开信息窗口。谢谢!

function placeMarker(position, map) {
  var marker = new google.maps.Marker({
    position: position,
    map: map,
  });
  var infowindow = new google.maps.InfoWindow({
    content: 'Latitude: ' + position.lat() +
      '<br>Longitude: ' + position.lng()
  });
  infowindow.open(map, marker);
}
map.addListener('click', function(e) {
  placeMarker(e.latLng, map);
  map.setZoom(9);
  map.setCenter(marker.getPosition());
  infowindow.setContent(content);
});

1 个答案:

答案 0 :(得分:1)

关闭信息窗口后将不会打开它,因为单击标记时未添加侦听器。创建标记时,只需打开一次即可。

此外,最好只创建1个InfoWindow对象(在placeMarker函数之外),并在必要时使用setContentopen方法,除非您需要同时打开多个InfoWindows。时间。

以下概念证明:

function initMap() {

  var map = new google.maps.Map(document.getElementById('map-canvas'), {
    zoom: 3,
    center: {
      lat: -28.024,
      lng: 140.887
    }
  });

  var infowindow = new google.maps.InfoWindow();

  // On map click, create marker
  google.maps.event.addListener(map, 'click', function(e) {

    var marker = new google.maps.Marker({
      position: e.latLng,
      map: map,
    });
    
    // Set infowindow content and open
    infowindow.setContent(e.latLng.lat() + ', ' + e.latLng.lng());
    infowindow.open(map, marker);

    // On marker click, set infowindow content and open
    google.maps.event.addListener(marker, 'click', function() {

      infowindow.setContent(this.getPosition().lat() + ', ' + this.getPosition().lng());
      infowindow.open(map, marker);
    });
  });
}

initMap();
#map-canvas {
  height: 200px;
}
<div id="map-canvas"></div>

<script src="https://maps.googleapis.com/maps/api/js"></script>