Клуб API Карт

Как правильно кластеризовать объекты после геокодирования

sem-vanya
8 ноября 2013, 10:36

Добрый день!

Столкнулся с такой проблемой: осуществляю множественное геокодирование, получившийся набор objects хочу кластеризовать, но получается немного коряво, т.к. на карте высвечиваются как кластерные метки, так и метки объектов после геокодирования (при этом если убрать строку .addTo(myMap.geoObjects); при геокодировании, то не выводится вообще ничего на карту).
Нужно чтобы метки отображались как при обычной кластеризации, и второй вопрос как сделать эти метки красными (не очень понятно как при таком заведении меток менять им цвет).
Буду очень благодарен за помощь!  (в api совсем новичок, поэтому не бейте сильно)
    
Карта магазинов

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



   
    http://yandex.st/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
 Карта магазинов
   





   
       
   


1. Точно надо убрать строчку addTo(map.geoObjects);

2.  Можно получать кластеризатор без промежуточного geoQuery (это будет быстрее).  

var clusterer = objects.clusterize();

3. Как задать стили меткам

objects.setOptions('preset', 'twirl#redIcon');

 

 Если при удалении строчки не показываются объекты - это отдельная история, надо смотреть, где ошибка.

За красные метки большое спасибо!

К сожалению, при выполении пунктов 1 и 2 на карте ничего не отображается(

По пункту 2: я правильно понял, что вместо строки

var clusterer = ymaps.geoQuery(objects).clusterize();

надо вставить

var clusterer = objects.clusterize();   ?

По пункту 1 я делал просто как в примерах:http://api.yandex.ru/maps/jsbox/multigeocode

Вообще весь код фактически взят из песочницы:-)

 По пункту 2 все верно. Почему объекты не видны на карте пока не очень понятно. Можете дать ссылку на страницу?

Зачем геокодировать одни те же адреса магазинов каждый раз?

прогеокодируйте их один раз на сервере и отдавайте координаты

Подскажите пожалуйста как это сделать (или можно ссылочку для "чайников":-)). Вообще задача какая: отобразить на карте все магазины, при этом загоняя их в кластеризатор. Точек на карте порядка 400, при этом примерно раз в неделю добавляется 2-3 точки.

Я вообще хотел с помощью VBA записывать в html все адреса магазинов, их геокодировать и отправлять на карту. И вроде как даже все работает, но вылазят метки поверх кластерных и все, при этом если увеличить масштаб до того, при котором видны только метки, а потом опять его уменьшать, то все будет отображаться нормально.

http://ymapsapi.ya.ru/replies.xml?item_no=485

http://ymapsapi.ya.ru/replies.xml?item_no=81

 

Каждый раз геокодируя 400 точек на клиенте каждый клиент будет отправлять 400 http-запросов, это лишний траффик, и тормоза.

При достижении рубежа 25000 запросов в сутки, т.е. всего ~50 клиентов вы превысите суточный лимит и возможно будете забанены Яндексом,

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

А бех php сделать это никак не получится? Фишка в том, что клиент будет 1. Карта будет использоваться только на 1 компе, открываться 2-3 раза в день, и, следоваттельно, до 25000 запросов дело не дойдет.

Давайте тогда вопрос немного по-другому поставим: как из результатов геокодирования получить координаты в виде [долгота, широта], чтобы загонять в кластеризатор, как показано здесь: http://api.yandex.ru/maps/jsbox/clusterer_create    ?

Тогда я буду геокодировать только новые адреса, а старые хранить в массиве и проблема будет решена.

Вообще такое использование АПИ противоречит пользовательскому соглашению

 

2.3.2. Сервис может использоваться Пользователем только в рамках сайтов или мобильных приложений, доступных для бесплатного открытого использования неограниченным кругом лиц. Сервис не может использоваться для проектов, требующих оплаты, или иным образом ограничивающих доступ к ним третьих лиц. Необходимость зарегистрироваться не считается ограничением доступа в рамках настоящего пункта.

Хмм, да, тогда придется и в сайт встраивать. Тогда правда возникает проблема с количеством запросов.

Будем думать...

А как все таки получиться координаты после геокодирования в виде [долгота, широта]?

Вы можете использовать любой язык для работы с http-геокодером

Я в свое время геокодировал свою базу объектов на javascript с помощью NodeJS