Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript InfoWindow不支持';我不想用谷歌地图Api V3来结束_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

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您再次保存了我的夜晚:)信息。关闭()