Клуб API Карт

Загрузка точек из нескольких KML файлов

Пост в архиве.

Здравствуйте

Для загрузки точек из  kml использую

 

var timestamp = new Date().getTime();
ymaps.geoXml.load("http://мойсайт.com/kml/routes.kml?" + timestamp)
    .then(function (res) {
        myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
    }, function (error) { // Вызывается в случае неудачной загрузки YMapsML
        alert('Ошибка: ' + error);
    });

 

 

Подскажите как загрузить точки из нескольких файлов лежащих в той же папке / точки из всех файлов в папке?

Спасибо

5 комментариев

Есть два варианта

1. Делать geoXml.load для каждого файла

2. Объединить все KML-файлы в один

Спасибо.

В итоге вышло так

var timestamp = new Date().getTime(); 
    ymaps.geoXml.load("http://мойсайт.com/kml1/111.kml?" + timestamp)
                            .then(function (res) { 
                                 myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
                             }, function (error){   // Вызывается в случае неудачной загрузки YMapsML
                                    alert('Ошибка: ' + error);        
                                });
       ymaps.geoXml.load("http://мойсайт.com/kml1/22222.kml?" + timestamp)
                            .then(function (res) { 
                                 myMap.geoObjects.add(res.geoObjects); // Добавление геообъектов на карту
                             }, function (error){   // Вызывается в случае неудачной загрузки YMapsML
                                    alert('Ошибка: ' + error);        
                                });
      function onGeoXmlLoad (res) {
        myMap.geoObjects.add(res.geoObjects);
        if (res.mapState) {
            res.mapState.applyToMap(myMap);
        }

Егоров Иван
19 мая 2021, 11:59
j.f.doe,
Подскажите пожалуйста как объеденить файлы kml или найти специалиста который это сделает. Я не программист и не понимаю в коде ничего. 
Егоров Иван
19 мая 2021, 11:58
dimik,
Подскажите пожалуйста как объеденить файлы kml или найти специалиста который это сделает. Я не программист и не понимаю в коде ничего. 
mapsapi-help
Сотрудник Яндекса19 мая 2021, 14:07
Егоров Иван,
Здравствуйте! KML - это формат данных на основе XML-разметки. Структура KML-файла иерархична - дочерние теги (например, свойства геообъектов) всегда будут находиться внутри родительских (самих геообъектов). Пример записи KML из нашей песочницы:


<Placemark>
  <name>Метка 3</name>
  <description/>
  <Style>
    <IconStyle>
      <Icon>
        <href>http://api-maps.yandex.ru/i/0.4/micro/pmyws.png</href>
      </Icon>
      <hotSpot x="7" y="28" xunits="pixels" yunits="insetPixels"/>
    </IconStyle>
  </Style>
  <Point>
    <coordinates>29.702651,59.994675</coordinates>
  </Point>
</Placemark>


Данный код содержит информацию об объекте "Геометка", в частности её координаты и стиль иконки.



Самый простой способ объединить KML-файлы - вложить всё содержимое тега <Document> файла 1 в тег <Document> файла 2 - получим список геообъектов, который должен корректно читаться большинством платформ (в том числе нашими Конструктором карт и JS API). Но могут быть нюансы в зависимости от структуры исходных файлов - объединяя файлы таким "грубым" способом, вы можете потерять часть данных.



Что касается поиска специалиста - вам сможет помочь спец, знакомый с XML (html-верстальщики и т. д.).
Обновлено 19 мая 2021, 14:07