0

Я использую Карты Google для отображения маркеров на карте. Я использую Markermanager из служебной библиотеки Google Maps версии 1.1 (http://gmaps-utility-library-dev.googlecode.com/svn/tags/markermanager/1.1/src/markermanager.js)Google Maps Markermanager: маркеры не отображаются в IE

скрипт отлично работает в Firefox, Chrome и Opera, однако в IE7 и IE8 карта отображается без маркеров. IE дает мне ошибку:

'posn.0' пусто или нет объекта googlemaps.js Код: 0 URI : mydomain.com/googlemaps.js

Googlemaps.js выглядит как:

var officeLayer = [ 
{ 
"zoom": [0, 1], 
"places": [ 
    { 
    "name": "USA", 
    "posn": [40.72, -73.9826] 
    }, 
    { 
    "name": "Europe", 
    "posn": [52.370, 4.8966] 
    } 
] 
}, 
{ 
"zoom": [2, 17], 
"places": [ 
    { 
    "name": "Amsterdam", 
    "posn": [52.370, 4.8966] 
    }, 
    { 
    "name": "Barcelona", 
    "posn": [41.388, 2.1833] 
    }, 
    { 
    "name": "Berlin", 
    "posn": [52.5166, 13.4000] 
    }, 
    { 
    "name": "New York City", 
    "posn": [40.72, -73.9826] 
    }, 
    { 
    "name": "Paris", 
    "posn": [48.860, 2.3333] 
    } 
] 
}, 
{ 
"zoom": [9, 17], 
"places": [ 
{ 
    "name": "&klevering Centraal", 
    "posn": [52.379446, 4.893913] 
}, 
{ 
    "name": "290 Square Meters", 
    "posn": [52.368906, 4.902288] 
} 
] 
} 
]; 

var map; 
var mgr; 
var icons = {}; 
var allmarkers = []; 

function getIcon(images) { 
var icon = null; 
if (images) { 
if (icons[images[0]]) { 
icon = icons[images[0]]; 
} else { 
icon = new GIcon(); 
icon.image = "img/" 
    + images[0] + ".png"; 
var size = iconData[images[0]]; 
icon.iconSize = new GSize(size.width, size.height); 
icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1); 
icon.shadow = "img/" 
    + images[1] + ".png"; 
size = iconData[images[1]]; 
icon.shadowSize = new GSize(size.width, size.height); 
icons[images[0]] = icon; 
} 
} 
return icon; 
} 

function setupOfficeMarkers() { 
allmarkers.length = 0; 
for (var i in officeLayer) { 
var layer = officeLayer[i]; 
var markers = []; 
for (var j in layer["places"]) { 
var place = layer["places"][j]; 
var icon = getIcon(place["icon"]); 
var title = place["name"]; 
var posn = new GLatLng(place["posn"][0], place["posn"][1]); 
var marker = createMarker(posn,title,icon); 
markers.push(marker); 
allmarkers.push(marker); 
} 
mgr.addMarkers(markers, layer["zoom"][0], layer["zoom"][1]); 
} 
mgr.refresh(); 
} 

function createMarker(posn, title, icon) { 
var marker = new GMarker(posn, {title: title, icon: icon, draggable:false }); 
return marker; 
} 

function reloadMarkers() { 
setupOfficeMarkers(); 
} 

Вы можете увидеть сценарий жить в http://www.trendy-places.com/Amsterdam

Я не могу выяснить, что вызывает ошибку.

Благодарим за помощь!

ответ

1

Проверьте, нет ли запятой в ваших местах массивов. IE может ожидать другого элемента и вызвать ошибку.

"places": [ 
    { 
    "name": "USA", 
    "posn": [40.72, -73.9826] 
    }, 
{ 
    "name": "Europe", 
    "posn": [52.370, 4.8966] 
    }**,** 
+0

Благодарим за помощь Рика. Я удалил конечную запятую и, к сожалению, ошибка все еще происходит. Я обновил фактический сценарий в своем сообщении выше. Что еще может вызвать эту ошибку? – TrendyT

+0

Вы пытались включить профилировщик скрипта, чтобы узнать, где происходит точная ошибка? Вы можете получить немного больше деталей, чем типичное диалоговое окно «предупреждение». – Rick

+0

Благодарю вас за вашу постоянную помощь! С профайлером скрипта вы подразумеваете функцию F12 в IE, правильно? К сожалению, профайлер не предоставляет мне больше информации об ошибке. Это относится только к строке 91, где перечислены следующие данные: «var posn = new GLatLng (место [« posn »] [0], место [« posn »] [1]); – TrendyT