Отображение объектов из KML, GPX и YMapsML

API позволяет загружать данные в форматах KML, GPX и YMapsML. Например, можно отметить объекты в Конструкторе карт, а через JS API добавить их на карту. У добавленных объектов можно настроить внешний вид и реакцию на события.

Загрузка XML

Для загрузки данных используется функция geoXml.load(), в которую передается ссылка на XML-файл. Функция обрабатывает данные асинхронно.

Внимание. Загружаемый файл должен быть размещен на удаленном сервере и доступен по прямой ссылке.
// Загрузка XML данных.
// Функция определяет формат файла (KML, GPX или YMapsML) автоматически.
var data = ymaps.geoXml.load("https://sandbox.api.maps.yandex.net/examples/ru/2.1/geoxml_display/geoObjects.kml");

// Обработка полученного асинхронно ответа.
data.then(function(res) {
    // Добавление объектов на карту.
    myMap.geoObjects.add(res.geoObjects);
});

Данные о загруженных объектах преобразуются в коллекцию GeoObjectCollection. Ссылка на коллекцию размещается в поле объекта geoObjects, передаваемого в функцию-обработчик.

Структура коллекции GeoObjectCollection зависит от структуры загружаемых данных. GeoObjectCollection может содержать вложенные коллекции. Ниже приведен пример, как получить доступ к объектам таких коллекций:

// Пример получения первого объекта из коллекции.
var data = ymaps.geoXml.load("https://sandbox.api.maps.yandex.net/examples/ru/2.1/geoxml_display/geoObjects.kml");

data.then(function(res) {
  // Проверка на наличие геометрия у объекта.
  if (res.geoObjects.get(0).geometry == null){
    // Если геометрии нет, то это коллекция. Можно обработать вложенный объект.
    console.log("Тип объекта из вложенной коллекции: " + res.geoObjects.get(0).get(0).geometry.getType());
  }
  else{
    // Иначе можно обработать сам объект.
    console.log("Тип объекта верхнего уровня: " + res.geoObjects.get(0).geometry.getType());
  }
});

Загрузка данных из Конструктора карт

Конструктор карт — это визуальный редактор, позволяющий отмечать объекты на карте. Например, с его помощью можно разметить зоны доставки или нарисовать схему проезда на карте.

Чтобы использовать данные из Конструктора карт в JS API, экспортируйте их в формате KML или GPX. Полученный файл загрузите с помощью функции geoXml.load().

Настройка пресетов для GPX-треков

При работе с GPX-треками доступны дополнительные пресеты:

  • gpx#interactive — при клике на любой точке ломанной показывается дополнительная информация, полученная из GPX-трека (время, скорость и прочее). Используется по умолчанию.
  • gpx#plain — при клике не выводится дополнительной информации.

Изменить пресет можно следующим образом:

// Загрузка XML данных.
var data = ymaps.geoXml.load("https://sandbox.api.maps.yandex.net/examples/ru/2.1/geoxml_display/geoObjects.gpx")

// Загрузка производится асинхронно.
data.then(function(res) {
    // Установка пресета.
    res.geoObjects.options.set({
        "preset": "gpx#plain"
    });
    // Добавление объектов на карту.
    myMap.geoObjects.add(res.geoObjects);
});

Примеры