以下のコードはFirefoxとIE9で正常に機能しますが、IE8でマーカーを更新する際に問題が発生します。「SCRIPT16389:指定されていないエラー。main.js、20行目の文字313」が表示され、作成されたマーカーが新しいデータセットで更新されません。
私の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では、マップは正常に読み込まれ、最初のデータは正常に表示されますが、新しいデータは更新されないため、deleteOverlaysに問題があると思いますか?
上記の例は、http: //google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/advanced_example.html?compiledに基づいています。