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