geoXml.load

Статическая функция.

Загружает XML-файл с географическими данными и преобразует его в коллекцию GeoObjectCollection. Сформированная коллекция может быть передана заданной функции для последующей обработки. Поддерживаемые форматы XML-данных: YMapsML, KML, GPX. Для самой верхней коллекции геообъектов GPX-файла доступны следующие пресеты:
  • 'gpx#interactive' - обеспечивает вывод информации о точке маршрута при клике. Также при использовании этого пресета в макете балуна становятся доступными следующие свойства геообъекта: time, velocity, trackName, trackDescription, pointName, pointDescription, lon, lat, sym. Используется по умолчанию.
  • 'gpx#plain' - элементы gpx-коллекции ведут себя как обычные геообъекты;
Возвращает объект-promise. Если xml-файл по указанному урлу будет успешно загружен, promise будет подтверждён и получит в качестве параметров объект со следующими полями:
  • geoObjects - коллекция геообъектов GeoObjectCollection;
  • mapState - описание состояния карты IMapState (только для YMapsML);
{ vow.Promise } geoXml.load(url)

Параметры:

Параметр Значение по умолчанию Описание
url *

Тип: String

URL файла с географическими данными.

* Обязательный параметр/опция.

Пример:

// Создаем и инициализируем карту.

// Загрузка и отображение файла ymapsml из сервиса My Maps
ymaps.geoXml.load('http://maps.yandex.ru/export/usermaps/HNQ5uTUgbjy6L0dW2uReUjSoXb1Ad7jw/')
     .then(function (res) {
         // Добавление элементов файла ymapsml на карту
         map.geoObjects.add(res.geoObjects);
         // Установка границ и типа карты..
         // границы res.mapState.getBounds() применяются к карте асинхронно,
         // потому что нам нужно получить информацию о доступных уровнях масштабирования для этих границ
         // res.mapState.getType() применяется синхронно.
         if (res.mapState) {
             res.mapState.applyToMap(map).then(function () {
                 alert('Boundaries applied to the map ' + res.mapState.getBounds().toString());
             });
         }
         // Если информация о границах не указана в repr:View в файле YMapsML,
         // мы можем применить gml:boundedBy для верхнего элемента ymaps: GeoObjectCollection
         else if (res.geoObjects.properties.get('boundedBy')) {
             map.setBounds(res.geoObjects.properties.get('boundedBy'), {
                 checkZoomRange: true
             });
         }
    });

// Загрузка и отображение файла KML
ymaps.geoXml.load('https://sandbox.api.maps.yandex.net/examples/ru/2.1/geoxml_display/geoObjects.kml')
     .then(function (res) {
         map.geoObjects.add(res.geoObjects);
    });

// Загрузка и отображение файла GPX
ymaps.geoXml.load('https://sandbox.api.maps.yandex.net/examples/ru/2.1/geoxml_display/geoObjects.gpx')
     .then(function (res) {
         res.geoObjects.options.set({
             balloonContentBodyLayout: ymaps.templateLayoutFactory.createClass(
             // Балун будет показывать только имя геообъекта свойство и скорость
             '<b>{{ properties.name }}</b> {{ properties.velocity }}'
             )
        });

         map.geoObjects.add(res.geoObjects);
         // Метаданные о границах из файла GPX хранятся в свойствах коллекции res.geoObjects.
         // Применим эти границы к карте. 
         if (res.geoObjects.properties.get('boundedBy')) {
             map.setBounds(res.geoObjects.properties.get('boundedBy'), {
                 checkZoomRange: true
             });
         }
     });