Стоит вопрос кластеризации объектов из поиска! Изначально использовал searchControl.search('Аптеки') потом через searchControl.getResultsArray() получал массивы данных и кластеризовал их clusterer.add(resultObjects);. Но как показала практика точки собираются хаотично и вечно подгружаются (так как Аптек оччччень много) кластеризация начинает работать коряво. Еще из ответов на мой вопрос выяснилось что это нарушение условий пользования:(
Загрузить данные из JSON на карту можно, например, с помощью geoQuery
. В песочнице есть пример.
Чтобы получить все нужные результаты важно корректно формировать запрос, как описано в документации. Например, по умолчанию API возвращает максимум 10 результатов, при этом у Вас не указано, какие это должны быть результаты. Поэтому вы получаете не более 10 каких-то аптек из базы Яндекса.
Корректный запрос в Вашем случае будет, например, таким:
https://search-maps.yandex.ru/v1/?text=Аптеки&type=biz&lang=ru_RU&results=500&bbox=36.83,55.67~38.24,55.91&apikey=<API-ключ>
Где:
results=500
означает, что нужно запросить максимум результатов одним запросом,bbox=36.83,55.67~38.24,55.91
определяет область карты, в которой нужно искать результаты в первую очередь.В итоге код получится каким-то таким:
jQuery.getJSON('https://search-maps.yandex.ru/v1/?text=Аптеки&type=biz&lang=ru_RU&results=500&bbox=36.83,55.67~38.24,55.91&apikey=<API-ключ>', function (json) {
var geoObjects = ym.geoQuery(json)
.addToMap(myMap)
.applyBoundsToMap(myMap, {
checkZoomRange: true
});
Обратите внимание, что если результатов по запросу более 500, то Вам нужно будет сделать несколько запросов на получение данных, используя параметр skip
. При этом через API нельзя гарантировано выгрузить все-все организации, потому что это API поиска, а не каталог базы, который можно "перебрать".
Виртуальный выделенный сервер (VDS) становится отличным выбором
как при наведении мышки на TD, получить <div id=""> ( первый дочерний элемент родителя <div id="body_infoReg"> в котором сработало событие )