Страница 1 из 1

Как сделать заддержку при загрузке kml?

Добавлено: 21 июл 2011, 11:43
cadmy
Когда устанавливаю на карту слой, он не успевает загрузится из oracle. В результате kml не отображается.
Как установить на карту слой после того как ссылка загрузится?
________________________________________________________
var markersKML_1 = new google.maps.KmlLayer("http:/");
подгружаю kml
markersKML_1.setMap(map);
устанавливаю kml на карту
________________________________________________________
или выполнять операторы с задержкой.
Проверял на коротких kml все работает.

Re: Как сделать заддержку при загрузке kml?

Добавлено: 21 июл 2011, 12:04
Mavka
В доках пишут что нужно ловить событие metadata_changed и в его обработчике добавлять слой на карту.

Re: Как сделать заддержку при загрузке kml?

Добавлено: 22 июл 2011, 08:12
cadmy
Что-то не выходит. Устанавливаю прослушиватель
_________________________________________________________________________________________
markersKML_1 = new google.maps.KmlLayer("http://");
alert ("0");
google.maps.event.addListener(markersKML_1, 'metadata_changed',
function(){alert("1");}
);
_________________________________________________________________________________________
И алерт 0 выскакивает, а 1 нет.

Re: Как сделать заддержку при загрузке kml?

Добавлено: 22 июл 2011, 10:43
Mavka
Не знаю... здесь работает.

Re: Как сделать заддержку при загрузке kml?

Добавлено: 22 июл 2011, 14:08
cadmy
Там вроде прослушивание событий html-страницы, а не состояние kml-файла определяется. Тем более там заранее сформированные kml используются, а у меня динамически формируются

Re: Как сделать заддержку при загрузке kml?

Добавлено: 25 июл 2011, 09:20
Mavka
1. В официальных доках пишут именно про metadata_changed.
2. С точки зрения веб-приложения не имеет значения готовый файл или он генерируется по запросу. Так как запрос асинхронный, то объем данных тоже не должен влиять.

Получаемый KML проверяли на корректность, может в нем ошибки?

Re: Как сделать заддержку при загрузке kml?

Добавлено: 27 июл 2011, 06:59
cadmy
Нет в нем ошибок.
Подскажите как тут использовать "metadata_change"

Re: Как сделать заддержку при загрузке kml?

Добавлено: 27 июл 2011, 10:12
Mavka
Видно что загрузка слоя KML (без реферрера нерабочая):

Код: Выделить всё

http://maps.googleapis.com/maps/api/js/KmlOverlayService.GetOverlays?1shttp%3A%2F%2Feqm-test.ertelecom.ru%2Fcgi-bin%2Fppo%2Fxml%2Fcreate_kml.test_kml%3Fcampus%3D1&callback=_xdc_._1ef4a2&token=76555
обрывается ошибкой на сервере google без указания причины "Error 500 (Server Error)!!1".

В интернете всего пара подходящих под ситуацию тредов и все они обсуждают таймаут. Хотя я бы предположил, что ошибка по таймауту была бы задокументирована. Тем не менее ждать когда слой загрузится бессмысленно - загрузка завершилась, но с ошибкой. Придется как то договариваться между Oracle и прокси, который на maps.googleapis.com, и искать что его не устраивает.