Клуб API Карт

окончание работы geoXml.load

Пост в архиве.
Возник вот такой вопрос: в моем проекте пользователи могут подгружать объекты "по требованию". Для этого после запроса для них делается выборка из базы данных, на основе этой выборки формируется .xml файл, который и грузится на карту.
Дабы не создавать путаницы между пользователями, я планирую формировать каждый раз временный xml файл, и удалять его по окончании загрузки объектов.
В связи с этим сам вопрос - при выполнении кода
ymaps.geoXml.load(адрес_загрузки)
                            .then(function (res) {
обработка загруженных данных
....

.then(function (res) { и т.д. срабатывает строго по окончании загрузки всех данных из xml файла в коллекцию? На данном этапе xml файл уже можно удалять? Или как отловить окончание обработки xml файла?
4 комментария

я бы не стал связываться с файлами,

но в принципе вы можете так сделать

и удалять после вызова функции в .then(function (res) {

мне казалось, что это рекомендованный способ загрузки из внешнего источника:) "Экономичнее" грузить напрямую из базы?

мне казалось, что это рекомендованный способ загрузки из внешнего источника

это поддерживаемые стандарты данных

но при этом происходит запрос с сервера яндекса к вам на сервер,

что выливается в лишнее время и мороку с xml-файлами.

Оно оправдывает себя только если у вас изначально уже храняться файлики с данными в формате YmapsML, Kml или GPX 

а генерить их динамически из базы и потом удалять это уже перебор =)

 

"Экономичнее" грузить напрямую из базы?

да

данные из базы сериализуете в JSON с клиента запрашиваете его

AJAX-ом и, как придут, создаете по этим данным геообъекты и добавляете их на карту.

Sergey Konstantinov
28 января 2016, 04:24
А зачем создать файл физически? Просто отвечайте в формате YMapsML, и не надо ничего сохранять/удалять.
При той схеме, которую вы предлагаете, веб-сервер принципиально не сможет обработать два одновременных запроса.