Клуб API Карт

добавление объектов из файла XML в геоколлекцию

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

Здравствуйте, ситуация такова:

есть у меня на карте некая геоколлекция, например MyCollection1, с тремя метками

Затем, я считываю данные из некоего XML  файла, где написано

 

 
<ymaps:GeoObjectCollection>
- <gml:featureMembers>
- <ymaps:GeoObject>
  <gml:name>Многоугольник1</gml:name>
  .......
  </ymaps:GeoObject>
- <ymaps:GeoObject>
  <gml:name>Многоугольник2</gml:name>
  ......
  </ymaps:GeoObject>
  </gml:featureMembers>
  </ymaps:GeoObjectCollection>
т.е гружу 2 объекта. Делаю как в примерах

 ymaps.geoXml.load(.......).then(function (res) {
                    myMap.geoObjects.add(res.geoObjects);
 
....
Оно естественно, грузится в некую geoObjects,не имеющую никакой связи с MyCollection1
если я пишу по-другому
ymaps.geoXml.load(.......).then(function (res) {
                    MyCollection1.add(res.geoObjects);
....
то оно грузится в MyCollection1, но, как я понимаю, на правах вложенной коллекции.
Как мне получить объекты Многоугольник1 и Многоугольник2 на том же уровне вложенности, что и уже лежащие в
MyCollection1 метки?
мутить конструкцию вида
res.geoObjects.each(function (geoObj) {
  geoObj.setParent(MyCollection1)
                })  ?
как-то вроде неоптимально выходит, да и результат странный
или есть более элегантный способ?

Кстати, новый API обрабатываетполигоны с внутренними контурами,те. <gml:interior> успешно обрабатывается, за что большое спасибо :)

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

если честно, не понял что такого странного, неэлегантного и неоптимального в each?

 

res.geoObjects.each(function (geoObj) {
    MyCollection1.add(geoObj);
});

просто мне кажется, что грузить данные сначала в одну коллекцию (100 объектов, например), а потом перекидывать в другую - несколько громоздко. Вот и спросила - нельзя ли сразу как-то вгружать в нужную коллекцию,но не как другую вложенную коллекцию, а на том же уровне, что и остальные объекты в целевой коллекции

Если я правильно поняла из описания структуры XML

вложенность

 

<ymaps:GeoObjectCollection>- <gml:featureMembers>- <ymaps:GeoObject>ymaps:GeoObject>-   gml:featureMembers>  обязательна? Не как коллекцию, а просто как набор объектов, котороые я могу вгружать в нужную мне структуру, описать своимногоугольники я не могу?

 

просто мне кажется, что грузить данные сначала в одну коллекцию (100 объектов, например), а потом перекидывать в другую - несколько громоздко.

Больше всего времени занимает загрузка данных, а перекладывание - пшик.

 

можно почитать про YmapsML в документации

Документацию я читала

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

Так вот может быть или должна быть, если речь идет о корневом элементе? Т.е 

ymaps:GeoObjectCollection обязателен или по желанию?