Javascript InfoWindow不支持';我不想用谷歌地图Api V3来结束
我无法关闭我正在拖动的标记的信息窗口,知道吗? 谢谢你的帮助Javascript InfoWindow不支持';我不想用谷歌地图Api V3来结束,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我无法关闭我正在拖动的标记的信息窗口,知道吗? 谢谢你的帮助 function mapClick(event) { createLocationMarker(event.latLng); } function createLocationMarker(location) { var clickedLocation = new google.maps.LatLng(location) var gMarker = new google.maps.Marker({p
function mapClick(event) {
createLocationMarker(event.latLng);
}
function createLocationMarker(location) {
var clickedLocation = new google.maps.LatLng(location)
var gMarker = new google.maps.Marker({position:location, map:gMap2, draggable: true});
gMap2.setCenter(location);
displayMarkerPosition(gMarker);
google.maps.event.addListener(gMarker, "dragstart", closeMapInfoWindow );
google.maps.event.addListener(gMarker, "dragend", function() { displayMarkerPosition(gMarker); });
}
function closeMapInfoWindow() {infowindow.close(); }
function displayMarkerPosition(gMarker) {
var message = "my message";
var infowindow = new google.maps.InfoWindow(
{ content : message,
});
infowindow.open(gMap2,gMarker);
}
是的,您在私有范围内定义
infowindow
,但在该范围外访问它。将以下内容添加到脚本的开头:
var infowindow;
并从构造函数行中删除“var”:
infowindow = new google.maps.InfoWindow(
完成的代码(来自您的示例)将被删除
多一点背景
使用
var
定义变量时,它与该范围相关联。如果在函数中定义该变量,则只有该函数和其中定义的其他函数才能访问该变量。传递它的唯一其他方法是作为函数中的参数
更新我这样做是为了方便多个信息窗口。请注意,我已恢复到原始的var
声明,以将其范围限定到该函数。然后返回对该对象的引用,以便以后使用:
function mapClick(event) {
createLocationMarker(event.latLng);
}
function createLocationMarker(location) {
var clickedLocation = new google.maps.LatLng(location)
var gMarker = new google.maps.Marker({position:location, map:gMap2, draggable: true});
gMap2.setCenter(location);
// Store reference to info window
var info = displayMarkerPosition(gMarker);
google.maps.event.addListener(gMarker, "dragstart", function(){ info.close } );
google.maps.event.addListener(gMarker, "dragend", function() { displayMarkerPosition(gMarker); });
}
function displayMarkerPosition(gMarker) {
var message = "my message";
var infowindow = new google.maps.InfoWindow(
{ content : message }
);
infowindow.open(gMap2,gMarker);
return infowindow; // Return the reference to the infowindow
}
Rapide,clair和précis!Merci beaucoup Doug:)@Shipow Avec plaisir“传递它的唯一其他方法是作为函数中的参数。”我希望有多个标记,因此定义了多个信息窗口,我应该在哪里使用参数访问实例?谢谢你time@Shipow我更新了我的答案来处理你的问题。让我知道这是否对你有效!它起作用了!!thx您再次保存了我的夜晚:)信息。关闭()