我正在尝试在可捕获坐标的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);
});
答案 0 :(得分:1)
关闭信息窗口后将不会打开它,因为单击标记时未添加侦听器。创建标记时,只需打开一次即可。
此外,最好只创建1个InfoWindow对象(在placeMarker
函数之外),并在必要时使用setContent
和open
方法,除非您需要同时打开多个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>