下面的代码在Firefox和IE9上正常工作,但在更新IE8上的标记时出现问题。我得到“SCRIPT16389:未指定的错误main.js,行20字313”,一旦装箱标记不与新数据组谷歌地图集群IE8问题
的更新我newdata.json格式
{
"points": [
{
"lat": "-28.0000",
"long": "133.1500",
"id": 0
},
{
"lat": "-28.4710",
"long": "153.3443",
"id": 1
}
]
}
及以下在脚本获得JSON和使用集群,以显示点
var map=null;
var markersArray = [];
var markerCluster= null;
google.load('maps', '3', {
other_params: 'sensor=true'
});
google.setOnLoadCallback(initialize);
function initialize() {
var mapcentre = new google.maps.LatLng(-29,135);
var mapOptions = {
zoom: 5,
center: mapcentre,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
startTimer();
}
function startTimer(){
setInterval(function() {
deleteOverlays();//should delete any existing point and clear the cluster
addMarker();
},3000);
}
function addMarker() {
$.ajax({
type: "GET",
url: "newdata.json",
async: false,
dataType: "json",
success: function(data){
for (var i = 0, dataPoint; dataPoint = data.points[i]; i++) {
var latLng = new google.maps.LatLng(dataPoint.lat,dataPoint.long);
var marker = new google.maps.Marker({
position: latLng
});
markersArray.push(marker);
}
markerCluster = new MarkerClusterer(map, markersArray);
}
});
}
// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray.length > 0) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
if(markerCluster!= null) {
markerCluster.clearMarkers();
}
}
在IE8地图加载罚款和INTIAL数据显示正常,但新的数据没有更新,所以我想什么毛病deleteOverlays?
考虑的'for' ......整点'in'是通过对象的属性进行迭代,而“阵列”只是与numberish对象的属性,我很难把它叫做白痴。什么是白痴,国际海事组织,这是这个毫无道理的假设,它有一些神奇的事情,它与阵列,它不会与语言中的其他任何对象。 – cHao 2012-07-18 04:03:39
是的,但数组属性不应该被暴露给它,而不是我应该能够通过someArray.0访问数组元素(反正非法标签,而不是任何浏览器最关心的) - 允许这会产生歧义。数组索引是有序的。常规的对象属性不是。他们是不同的动物,遵循不同的规则,应该这样对待。如果规范不明确,那应该是。我们很快得到了泛化的迭代器,但它比不方便的将属性和数组键分离出来更有用。 – 2012-07-18 14:10:05
更正,我的意思是数组元素,而不是属性。只要它很有用,它能够为数组添加元数据属性,然后在循环中使用hasOwn检查并能够假定键控数组元素不会被触及?想象一下真的很大的数组。 – 2012-07-18 14:31:48