Javascript Google Map API3 Map.fitBounds不在IE上工作

Javascript Google Map API3 Map.fitBounds不在IE上工作,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,我正在使用webservice从sql server加载标记。和一个聚类器来对这些标记进行分组,然后我使用map.fitBounds(bounds)重新调整地图大小以适应边界。。它在chrome和firefox上运行良好,但在IE上不起作用,它在一个google map api 3文件(main.js)中给了我一个堆栈空间不足的错误 您可以查看此演示以了解问题: 这是我代码的一部分 函数加载图(ARR标记){ var映射选项={ mapTypeId:google.maps.mapTypeId.R

我正在使用webservice从sql server加载标记。和一个聚类器来对这些标记进行分组,然后我使用map.fitBounds(bounds)重新调整地图大小以适应边界。。它在chrome和firefox上运行良好,但在IE上不起作用,它在一个google map api 3文件(main.js)中给了我一个堆栈空间不足的错误

您可以查看此演示以了解问题: 这是我代码的一部分

函数加载图(ARR标记){

var映射选项={
mapTypeId:google.maps.mapTypeId.ROADMAP,
街景控制:错误
}
var map=new google.maps.map(document.getElementById('map'),mapOptions);
var标记=[];
var-tempCount=0;
var bounds=new google.maps.LatLngBounds();
对于(var XMLCount=0;XMLCount
新的google.maps.LatLng($Markers.find('lt')[i].innerHTML

$Markers.find('lg')[i].innerHTML)

markers.push(新的google.maps.Marker)({

位置:myLatLng,
地图:地图,
动画:google.maps.animation.DROP,
markerid:$Markers.find('mid')[i].innerHTML,
catid:$Markers.find('cid')[i].innerHTML,
图标:LoadIcon($Markers.find('cimg')[i].innerHTML)
}));
infowindow=新建google.maps.infowindow({
内容:“正在加载…”
});
google.maps.event.addListener(标记[tempCount],'click',函数(){
infowindow.setContent('
加载../div>);
打开(地图,这个);
$.ajax(
{
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“Markers.asmx/GetMarker”,
数据:JSON.stringify({MarkerID:this['MarkerID'],
CategoryID:this['catid']}),
数据类型:“json”,
成功:功能(msg){
setContent(formatInfoDivHTML(msg.d));
}
});
map.panTo(this.getPosition());
打开(地图,这个);
});
扩展(myLatLng);
tempCount++;
}
}    
//////////////////////////问题就在这里
映射边界(bounds);
var mcOptions={gridSize:50,maxZoom:12};
var markerCluster=新的MarkerClusterer(映射、标记、mcOptions);
google.maps.event.trigger(映射,'resize');
}
谢谢你的帮助,我将不胜感激

还请注意,我在其他地方使用fitbounds,它工作得很好


仅供参考,当我使用较旧版本的google chrome(31.0.1650.57 m版)进行检查时,它给出了相同的错误。但是当我更新chrome时,问题已经解决了。

您的SplitXML函数正在将一个额外的null元素添加到标记数组中。大多数IE版本都不喜欢这样。

我解决了这个问题

IE似乎不支持我在此处使用的innerHTML属性:

$Markers.find('mid')[i].innerHTML

或者从xml字段检索数据的任何其他位置

所以它必须替换为textContent属性,如下所示:

$Markers.find('mid')[i].textContent

这就解决了整个问题


谢谢你们的帮助,伙计们

我怀疑问题在于你们的数据。所有的标记都有坐标吗?所有坐标都有效吗?所有坐标都是数字吗?@geocodezip是的,所有数据都很好,并且在其他浏览器上正常工作。。请查看此链接,查看IE的一个众所周知的错误演示,尽管建议不要使用innerHTML。请(在可能的情况下)@geocodezip谢谢,如果允许的话,我将在明天接受答案
var mapOptions = {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    streetViewControl: false
}


var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var markers = [];
var tempCount = 0;
var bounds = new google.maps.LatLngBounds();
for (var XMLCount = 0; XMLCount < arrMarkers.length; XMLCount++) {
    var Points = $.parseXML(arrMarkers[XMLCount]);
    $Markers = $(Points).find("Marker");
    for (var i = 0; i < $Markers.length; i++) {
        var tempID = $Markers.find('mid')[i].innerHTML;
        var tempCID = $Markers.find('cid')[i].innerHTML;
        var myLatLng =
            position: myLatLng,

            map: map,

            animation: google.maps.Animation.DROP,


            markerid: $Markers.find('mid')[i].innerHTML,

            catid: $Markers.find('cid')[i].innerHTML,
            icon: LoadIcon($Markers.find('cimg')[i].innerHTML)
        }));

        infowindow = new google.maps.InfoWindow({
            content: "loading..."
        });

        google.maps.event.addListener(markers[tempCount], 'click', function () {
            infowindow.setContent('<div ><img src="img/assets/loader.gif"/>
      Loading../div>');

            infowindow.open(map, this);
            $.ajax(
             {
                 type: "POST",
                 contentType: "application/json; charset=utf-8",
                 url: "Markers.asmx/GetMarker",
                 data: JSON.stringify({ MarkerID: this['markerid'],
                       CategoryID: this['catid'] }), 
                 dataType: "json",
                 success: function (msg) {
                     infowindow.setContent(formatInfoDivHTML(msg.d));
                 }
             });
            map.panTo(this.getPosition());
            infowindow.open(map, this);
        });

        bounds.extend(myLatLng);
        tempCount++;
    }
}    
//////////////////////////Here is the problem
map.fitBounds(bounds);
var mcOptions = { gridSize: 50, maxZoom: 12 };
var markerCluster = new MarkerClusterer(map, markers, mcOptions);
google.maps.event.trigger(map, 'resize'); 

}