Клуб API Карт

Загрузка меток и получение данных из YMapsML

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

Загружаю файл с данными:

ml[0] = new ymaps.geoXml.load('http://map.teploov.ru/snip-23-01-99.xml') ;

Для каждой метки задаю обработчик события при клике:

ml[0].then(
  function(res) {
    res.geoObjects.each(function (obj) {
      obj.events.add("click",
        function () {
          ClimatInfoOutput (obj, obj);
          $(function(){
            $(".btn-Cold").click(function(){
              $("#AddInfoColdPanel").slideToggle("slow");
              return false;
            }) ;
          }) ;
          $(function(){
            $(".btn-Warm").click(function(){
              $("#AddInfoWarmPanel").slideToggle("slow");
              return false;
            }) ;
          }) ;
          CalcRreq (obj);
          objGlobal = obj;
        }) ;
      document.getElementById("Preload").innerHTML = '';
    })
}) ;

Функция вытаскивания данных из XML выдает ошибку:

ClimatObj.metaDataProperty is undefined

при попытке получить данные:

 

function ClimatInfoOutput (ClimatObj, ClimatObjHum) {

...

String(ClimatObj.metaDataProperty.AnyMetaData.CTemp094)

... 

Помогите понять, что не так.

 

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

если ClimatObj - геообъект, то к метаданным нужно обращаться так:

ClimatObj.properties.get('metaDataProperty')..AnyMetaData.CTemp094

Спасибо, получилось.

А как быть в таком случае (наверсии 1.х работало):

ClimatObj.name

и 

ClimatObj.properties.hintContent 

 

так же, как и выше

ClimatObj.properties.get('name') и т.д.

Спасибо и это сработало.

И, надеюсь, последнее. 

Раньше координаты можно было получить так:

ClimatObj.getGeoPoint() 

Как быть теперь? 

ClimatObj.geometry.getCoordinates()

 

из объекта события так: e.get('coordPosition')

из геообъекта так: obj.geometry.getCoordinates()

Sergey Konstantinov
28 января 2016, 04:58

Кстати, можно слушать click не на каждом объекте, а на коллекции

res.geoObjects.events.add('click', function (e) {

    var obj = e.get('target');

    // ...

});

Не срабатывает.