Google Maps Markermanager: маркеры не отображаются в IE

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

Скрипт отлично работает в 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.

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

Спасибо за вашу помощь заранее!


person TrendyT    schedule 09.04.2012    source источник


Ответы (1)


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

"places": [
  {
    "name": "USA",
    "posn": [40.72, -73.9826]
  },
 {
    "name": "Europe",
    "posn": [52.370, 4.8966]
  }**,**
person Rick    schedule 09.04.2012
comment
Спасибо за помощь, Рик. Я удалил конечные запятые, и, к сожалению, ошибка все еще возникает. Я обновил реальный скрипт в своем посте выше. Что еще может вызвать этот баг? - person TrendyT; 09.04.2012
comment
Вы пытались включить профилировщик сценариев, чтобы увидеть, где именно возникает ошибка? Вы можете получить немного больше деталей, чем обычное диалоговое окно с предупреждением. - person Rick; 09.04.2012
comment
спасибо за вашу постоянную помощь! Под профилировщиком сценариев вы имеете в виду функцию F12 в IE, верно? К сожалению, профилировщик не предоставляет мне больше информации об ошибке. Это относится только к строке 91, где перечислены следующие данные: 'var posn = new GLatLng(place[posn][0], place[posn][1]);' - person TrendyT; 10.04.2012
comment
Так как я не мог выяснить, что вызвало ошибку. Я перестроил страницу с нуля на основе найденных примеров здесь. Теперь он работает нормально. Спасибо за помощь! - person TrendyT; 11.04.2012