Клуб API Карт

Способы хранения извлечения id из базы данных в метках карты

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

Доброе время суток.

Подскажите, возможно ли хранить идентификатор id из БД в метке карты и извлекать его при переопределенном событии click метки?

P.S.

Метки строятся по данным из БД, хотелось бы извлекать id объектов БД и перенаправлять на другой post запрос.

14 комментариев
Sergey Konstantinov
28 января 2016, 02:59
Да, можно. К метке можно привязывать properties - произвольные данные.
Белов Максим
28 января 2016, 02:59

это уже понял, вопрос в том ка его выташить, если прямым обращение то в вызывеаему функцию попадает только последнее значение, которое она приобрела при проходе цикла, если есть возможность, покажите пожалуйста в примере

оберните в self-invoking function

[цикл for]

(function (id) {

   // тут id будет актуальным

}(geoObject.properties.get('id'));

[/цикл for]

Sergey Konstantinov
28 января 2016, 02:59
http://habrahabr.ru/post/38642/
последний пример.

вообще самое лучшее решение -  не навешивать обработчики в цикле, а использовать event delegation

Белов Максим
28 января 2016, 02:59

Спасибо за ваши ответы, но пока я далек от истины.

for (var i = 0; i             myPlacemark = new ymaps.Placemark([result.data[i].corporationsObject_Latitude, result.data[i].corporationsObject_Longitude], {}, { preset: "twirl#greenStretchyIcon" });
            myPlacemark.properties.set({ iconContent:  result.data[i].corporationsObject_Name  });

            myPlacemark.properties.set({ id:  result.data[i].corporationsObject_Id  });

myPlacemark.events.add('click', function (e,id) {
                                    

}(myPlacemark.properties.get('id')));

MapObjectCollection.add(myPlacemark);

};

Правильно ли я обрисовал действо?

P.S.

Возможно проблема в прямоте моих рук, до прихода в мир HTML5 занимался WPF и SL4

Белов Максим
28 января 2016, 02:59

Проблему с получением id решил следуюшим способом

myPlacemark.properties.set({ id: result.data[i].corporationsObject_Id });
           

            myPlacemark.events.add('click', function (e) {
                var eMap = e.get('target');
                var id = eMap.properties.get('id');
                $.post("/Home/MenuContent", { id: id }, function () {
                  
                }, "json");

            });

Теперь следующая трабла, как по клику открыть балун и заполнить его данными из post запроса?

 

посмотрите эту статью в блоге

Белов Максим
28 января 2016, 02:59

Спасибо, то, что нужно.

Еще раз спасибо всем за помощь.

Белов Максим
28 января 2016, 02:59

Столкнулся с проблемой отображения списков в бауле.

Список вида:

json.data[i].name

отоброжается только первый элемент.

Подскажите куда копать? Поиск по клубу результа не принес.

я ничего не понял

в чем конкретно проблема?

Белов Максим
28 января 2016, 02:59

Как вывести в балун список объектов связанных с меткой?

Для примера: есть метка ТРЦ Авиатор,

в нем находятся офисы фирм иванов1, сидоров2, и т.д.

Список офисов я получаю через ajax, но в балуне отображается только первый офис.

Создайте HTML-разметку для всего списка офисов и вставьте ее в балун

Вообще лучше новые темы создавать на каждую проблему

Белов Максим
28 января 2016, 02:59

Не могли бы вы показать пример (поиск по документации API ничего "работающего" не принес)

Прошу прощения, по следующему вопросу обязятельно создам новую тему.