Документация
Справочник JavaScript API
2.1.64 (текущая версия)
collection
interactivityModel
Интерфейсы

Geo XML

API Яндекс.Карт позволяет загружать XML-файлы с географическими данными в форматах YMapsML, KML и GPX.

Для загрузки данных используется функция geoXml.load, в которую передаётся URL XML-файла. Загрузка производится асинхронно (аналогично геокодированию), а формат загружаемого файла определяется функцией geoXml.load автоматически. Данные о геообъектах преобразуются в коллекцию GeoObjectCollection и размещаются в поле geoObjects объекта, передаваемого в функцию-обработчик. Этот объект может быть размещен на карте.

ymaps.geoXml.load('http://openflights.org/demo/openflights-sample.kml').then(function (res) {
    myMap.geoObjects.add(res.geoObjects);
});

Загрузка XML-данных из источника с указанным URL производится сервером Яндекса. Поэтому XML-данные следует размещать на ресурсе, к которому предоставлен публичный доступ (или позаботиться о том, чтобы серверный загрузчик Яндекса смог получить доступ к нему).

Формат YMapsML позволяет описать не только координаты, геометрические свойства геообъектов и их отображение, но и включить в себя описание параметров карты. Параметры карты (если они заданы) помещаются в поле mapState в виде объекта, позволяющего применить эти параметры к любой карте.

ymaps.geoXml.load('http://maps.yandex.ru/export/usermaps/93jfWjoXws37exPmKH-OFIuj3IQduHal/').then(function (res) {
    myMap.geoObjects.add(res.geoObjects);
    if (res.mapState) {
        res.mapState.applyToMap(myMap);
    }
});

Для коллекции, в которую при загрузке преобразуется GPX-трек, определено два пресета с ключами gpx#interactive и gpx#plain. Первый изменяет свойства ломаных, которыми соединены GPX-точки, таким образом, что при клике на любой её точке показывается дополнительная информация (время, скорость и пр.). Этот пресет используется по умолчанию. Во втором случае вывод дополнительной информации не производится.

ymaps.geoXml.load('http://karmatsky.narod2.ru/MskChel2.xml').then(function (res) {
    res.geoObjects.options.set({'preset':'gpx#plain'});
    myMap.geoObjects.add(res.geoObjects);
});