Ладно, после того, как я немного покопался в JavaScript-консоли Chrome (мне это нравится), я смог заставить его работать идеально. Я переписал функции mapinit()
и mark()
так:
function mapinit() {
var conf = {
zoom: 11,
center: new google.maps.LatLng(45.7832856,-108.5006904),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('mapcont'),conf);
for(i in markers) {
markers[i][3] = new google.maps.LatLng(markers[i][0],markers[i][1]);
window.setTimeout('mark('+i+')',i*200);
}
}
function mark(i){
new google.maps.Marker({
position: markers[i][3],
animation: google.maps.Animation.DROP,
map: map,
title: markers[i][2]
});
}
Основное отличие здесь заключается в том, что переменная position
маркера, по-видимому, требует инициализации во внешней переменной по какой-то причине, поэтому, когда я перебираю массив markers
, я генерирую google.maps.LatLng
в качестве четвертого пункт для каждого маркера. Затем на это ссылается функция mark()
, и маркер отображается успешно. setTimeout
для ошеломляющего отображения маркеров прекрасно работает, особенно на более быстрых соединениях, где скрипты и карта загружаются быстро.
Просмотр конечного результата на моем сайте inClass