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)
Параметры:
* Обязательный параметр/опция.
Пример:
// 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
});
}
});