Клуб API Карт

при загрузке XML-файла значение свойства геообъекта - sym?

ashpuk
21 августа 2013, 16:35

привет всем!

прошу прощения, но не нашёл поиском ответа. при загрузке XML-файла с географическими данными (а точнее в формате GPX), каким образом при обработке мне получить значение свойства геообъекта - sym?

ниже в примере в первом случае получаю - undefined, а во втором вижу нужное мне значение sym.

 

ymaps.geoXml.load('/files/file.xml')
    .then(function (res) {
        res.geoObjects.each(function (item) {
            alert(item.properties.get('sym'));
        });
        res.geoObjects.options.set({
            balloonContentBodyLayout: ymaps.templateLayoutFactory
                .createClass(
                    '<b>$[properties.name]</b></br>$[properties.sym]' +
                    '</br>')
        });
        window.myMap.geoObjects.add(res.geoObjects);
    });

  

спасибо.

Алексей

12 комментариев
Подписаться на комментарии к посту

не очень понятно, что вы имеете в виду. у вас в двух случаях указаны разные имена полей. Вам нужно name или sym?

прошу прощения, как экпериментировал, так и не поправил. конечно поле sym

 alert(item.properties.get('sym'));

 

 

У вас нет ссылки на страницу? Код выглядит правильно, непонятно, в чем проблема

проблема в том, что если в коде я использую alert(item.properties.get('name'));

то отображается значение поля name.

а если использую alert(item.properties.get('sym'));

то значение поля sym не отображается, выдается undefined

 

 

 

 

 

 

 

 

Нужно смотреть на ваш xml-файл, может в нем просто значение поля неправильно прописывается или еще что-то. Без ссылки сложно разобраться

в xml-файле всё нормально. ведь в другом использовании (см. ниже) поле sym отображается!

res.geoObjects.options.set({
balloonContentBodyLayout: ymaps.templateLayoutFactory
.createClass(
'$[properties.name]
$[properties.sym]' +
'
')
});

 

рискну предположить что возвращается коллекция в коллекции (вложенная коллекция)

попробуй так:

 

.then(function (res) {        res.geoObjects.each(function (item) {            alert(item.get(0).properties.get('sym'));        }); });

А вообще надо ссылку прикладывать, тут все-таки не "Битва Экстрасенсов"

 

набросал файлик для примера - http://off-road-omsk.ru/gpx.html

пользовательские поля попадают в метаданные.

item.properties.get('metaDataProperty.sym');

огромное спасибо!!!

всё работает! :)

 

 

конструкция alert(item.get(0).properties.get('sym')); не работает совсем.

да-да я вижу

ответил в треде ниже.

Вообще надо смотреть в консоли (console.log) а не алертами

тогда все сразу становится ясно