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(
        '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(
                    // Будем показывать в балуне только свойство 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
            });
        }
    });