Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 信息窗口&x27;无法调用方法";开放式;未定义的';_Javascript_Google Maps - Fatal编程技术网

Javascript 信息窗口&x27;无法调用方法";开放式;未定义的';

Javascript 信息窗口&x27;无法调用方法";开放式;未定义的';,javascript,google-maps,Javascript,Google Maps,我通过for循环从xml向Google地图添加了许多标记。当我点击弹出信息窗口的标记时,我得到一个错误,说明“无法调用未定义的方法”open”。我做错了什么 jQuery var markers = xml.documentElement.getElementsByTagName('marker'); //function to create unique id var getMarkerUniqueId = function(lat, lng) { return lat + '_' +

我通过for循环从xml向Google地图添加了许多标记。当我点击弹出信息窗口的标记时,我得到一个错误,说明“无法调用未定义的方法”open”。我做错了什么

jQuery

var markers = xml.documentElement.getElementsByTagName('marker');
//function to create unique id
var getMarkerUniqueId = function(lat, lng) {
   return lat + '_' + lng;
}
//function to get lat/lng
var getLatLng = function(lat,lng) {
    return new google.maps.LatLng(lat, lng);
}
//cycle through and create map markers for each xml marker
for (var i = 0; i < markers.length; i++) {
    //create vars to hold lat/lng from database
    var lat = parseFloat(markers[i].getAttribute('lat'));
    var lng = parseFloat(markers[i].getAttribute('lng'));
    //create a unique id for the marker
    var markerId = getMarkerUniqueId(lat, lng);
    var name = markers[i].getAttribute('Type');
    var html = '<b>' + name + '</b>';
    //create the marker on the map
    var marker = new google.maps.Marker({
        map: the_Map,
        position: getLatLng(lat, lng),
        id: 'marker_' + markerId
    });
    //put the markerId into the cache
    markers_arr[markerId] = marker;
    infoWindow[i] = new google.maps.InfoWindow({
        content: html,
        position: getLatLng(lat, lng),
    });
    infobox[i] = google.maps.event.addListener(marker,'click',function() {
        infoWindow[i].open(the_Map,marker);
    });
}
var markers=xml.documentElement.getElementsByTagName('marker');
//用于创建唯一id的函数
var getMarkerUniqueId=函数(纬度,液化天然气){
返回lat+lng;
}
//获取lat/lng的功能
var getLatLng=功能(lat,lng){
返回新的google.maps.LatLng(lat,lng);
}
//循环浏览并为每个xml标记创建地图标记
对于(var i=0;i
您需要关闭:

infobox[i] = google.maps.event.addListener(marker,'click',function() {
    return function (windowToOpen) {
        windowToOpen.open(the_Map,marker);
    }(infoWindow[i]);
});
您需要关闭:

infobox[i] = google.maps.event.addListener(marker,'click',function() {
    return function (windowToOpen) {
        windowToOpen.open(the_Map,marker);
    }(infoWindow[i]);
});

执行infoWindow[i]时,i的打开值等于markers.length。您应该为每个信息窗口创建一个上下文

修改代码:

function createContext (marker, iw){

    google.maps.event.addListener(marker,'click',function() {
      iw.open(the_Map,marker);
 /  });
}
for (var i = 0; i < markers.length; i++) {
   ....
 infobox[i] = createContext(marker, infoWindow[i]); 

}
函数createContext(标记,iw){
google.maps.event.addListener(标记,'click',函数(){
iw.打开(地图、标记);
/  });
}
对于(var i=0;i
在执行infoWindow[i]时。i的打开值等于markers.length。您应该为每个信息窗口创建一个上下文

修改代码:

function createContext (marker, iw){

    google.maps.event.addListener(marker,'click',function() {
      iw.open(the_Map,marker);
 /  });
}
for (var i = 0; i < markers.length; i++) {
   ....
 infobox[i] = createContext(marker, infoWindow[i]); 

}
函数createContext(标记,iw){
google.maps.event.addListener(标记,'click',函数(){
iw.打开(地图、标记);
/  });
}
对于(var i=0;i
我不这么认为<代码>这将是单击的元素。不要这样认为
这将是单击的元素。@CristianoFontes,是的,它在js文件的顶部声明,文件中的所有其他全局变量为:var infoWindow={}@CristianoFontes,是的,它在js文件的顶部声明,文件中的所有其他全局变量为:var infoWindow={};