Клуб API Карт

Отображение меток с заданным контентом балуна.

Stafox
15 февраля 2014, 19:53

Добрый вечер. Нужен совет в реализации следующей задачи:


После загрузки карты, ajax'ом получаю данные в json формате (id, street_name, house_number).

В цикле получаю геокоординаты объектов

 

var search = ymaps.geocode("Минск, " + ticket.street_name + " " + ticket.house_number);

 

Далее cоздаю метки через ymaps.GeoObject (также пробовал ymaps.Placemark).

Контент балуна задается через  templateLayoutFactory :

template = "Адрес: $[properties.street_name$[properties.house_number]";

tlf = ymaps.templateLayoutFactory.createClass(template).


Каждая метка импользует шаблон (balloonContentLayout: tlf). Добавляю каждую метку в коллецию 

ticketsCollection.add(ticketPlacemark);

После того как все итерации цикла завершены - коллеция добавляется на карту mapInstance.geoObjects.add(ticketsCollection)


Проблема в следующем:

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


Вопрос:

Как отобразить правильный контент балуна для кажого элемента? Правильный ли это подход, или лучше отобразить метки, а контент подгружать ajax'ом по клику на метку?

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

Уже сто раз обсуждалось что не надо геокодировать на клиенте.

Тем более если нет понимания как работать с асинхронными операциями в javascript

Можно ссылку на объяснения почему не стоит геокодировать на клиенте? Ну, или если не сложно, поясните еще раз?

У меня есть возможность вытащить геокоординаты из БД, записав их туда заранее. Но опять таки, вытаскиваться они будут с клиента через ymaps.

Каждое геокодирование это http-запрос

сколько объектов столько каждый клиент будет делать запросов.

расходуется траффик и скорость работы сайта снижается

легко выйти за суточный лимит геокодирования

Скоро в документации будет статья на эту тему

Спасибо. Про суточные лимиты не знал. Тогда, конечно же, буду доставать геокординаты единоразово, при добавлении объекта.

Я только начал работать с YM, поэтому хотелось просто потестить и пощупать, а тут уперся в проблемку.

upd

Все отлично работает: выполняю геокодирование при добавлении объекта (а также еще пару операций типа поиска ближайших объектов).