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 файла с географическими данными.

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

Пример:

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

// Загрузим и отобразим a ymapsml-файл из сервиса Мои Карты.
ymaps.geoXml.load('http://maps.yandex.ru/export/usermaps/HNQ5uTUgbjy6L0dW2uReUjSoXb1Ad7jw/')
     .then(function (res) {
         // Добавим объекты на карту.
         map.geoObjects.add(res.geoObjects);
         // Установим тип и границы карты.
         // res.mapState.getBounds() границы устанавливаются в асинхронном режиме,
         // так как сначала нужно получить информацию о доступных уровнях масштабирования для заданных границ.
         // res.mapState.getType() добавляется на карту в синхронном режиме.
         if (res.mapState) {
             res.mapState.applyToMap(map).then(function () {
                 alert('Изменены границы карты ' + 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('http://api.yandex.ru/maps/doc/jsapi/1.x/examples/kml/demonstration.xml')
     .then(function (res) {
         map.geoObjects.add(res.geoObjects);
    });

// Загрузка и отображение gpx-файла.
ymaps.geoXml.load('http://karmatsky.narod2.ru/MskChel2.xml')
     .then(function (res) {
         res.geoObjects.options.set({
             balloonContentBodyLayout: ymaps.templateLayoutFactory.createClass(
             // Будем показывать в балуне только свойство name геообъекта и скорость.
             '<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
             });
         }
     });