Я создаю интерактивную карту для веб-сайта, созданного с помощью Squarespace (предпочтения друга) с использованием API Javascript Google Maps. В принципе, у меня появляется карта и все маркеры (они загружаются через массив объектов в формате [NAME, LAT, LONG, ADDRESS, PHONE, INFO]). Однако я хочу иметь возможность использовать прослушиватели на всех маркерах, чтобы при щелчке имя отображалось на ярлыке на карте, а затем появлялись все детали (адрес, телефон, информация) ниже. Я уже работал над исходным сайтом. Это было довольно просто. Но когда мой друг захотел перейти на Squarespace, мне пришлось узнать, как работает их инъекция кода. Вещи вводятся в заголовок, но я думаю, что моя проблема будет решена, если я смогу поместить код после тела.API JavaScript для Google Карт: функция выбора маркеров
В чем проблема: JQuery, используемый для заполнения деталей как на карте, так и под ней, ссылается на элементы DOM, которые не определены при загрузке сценария. Итак, я подумал, что нужно обернуть функцию в функцию $ (document) .ready. Когда я пытаюсь это сделать, карта вообще не загружается. Любые предложения о том, как я должен справиться с этим? Вот код для загрузки элементов из массива «места» и добавление слушателей:
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
bounds.extend(marker.position);
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
console.log(locations[i][0]);
$('#store-text').text(details[i][0]);
$('#store-text-2').text(details[i][1]);
$('#phone-text').text(details[i][2]);
$('#desc-text').text(details[i][3]);
infowindow.open(map, marker);
}
})(marker, i));
}
Я получаю сообщение об ошибке, что «нажмите» и «текст» равны нулю, так что ясно, что это вопрос о том, когда DOM полностью загружен по сравнению с загрузкой сценария. Как побочная заметка, щелчки маркеров успешно записываются на консоль, так что я уверен, что остальная часть функции работает как и планировалось.