geoXml.load

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

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

Параметры:

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

Тип: String

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

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

Пример:

// Cоздание и инициализация карты map...

// Загрузка и отображение ymapsml-файла c сервиса "Мои карты"
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('К карте применены границы ' + 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 геообъекта и скорость
             '$[properties.name] $[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
             });
         }
     });