Google Map API3 Map.fitBounds无法在IE上运行

时间:2014-02-01 13:32:17

标签: javascript jquery google-maps-api-3

我正在使用webservice从sql server加载标记。和一个群集来分组这些标记,然后我重新调整地图大小以适应边界使用map.fitBounds(边界)..它适用于chrome和firefox,但不适用于IE,它给了我一个其中一个谷歌地图api 3文件(main.js)中的堆栈空间错误

您可以针对此问题查看此演示:http://aprilit.com/gmap/default.aspx 这是我的代码的一部分。

  

函数LoadMap(arrMarkers){

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 =
     

new google.maps.LatLng($ Markers.find('lt')[i] .innerHTML,

     

$ Markers.find( 'LG')[I] .innerHTML);

     

markers.push(new google.maps.Marker({

            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'); 

}

感谢并感谢您的帮助

还要注意我在其他地方使用fitbounds并且它工作得很好。

仅供参考,当我使用较旧版本的谷歌浏览器(版本31.0.1650.57米)检查时,它给了我同样的错误..但是当我更新chrome时问题已经消失

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我解决了这个问题,

IE似乎不支持我在这里使用的innerHTML属性:

  

$ Markers.find( 'MID')[I] .innerHTML

或我从xml字段中检索数据的任何其他地方。

因此必须将textContent属性替换为:

  

$ Markers.find( 'MID')[I] .textContent;

这解决了整个问题。!!

感谢您的帮助