Клуб API Карт

Большой список объектов на карте

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

У меня есть задача - сделать карту у которой будет фильтр из разных категорий и типов объектов. Дело в том, что объектов которые нужно фильтровать свыше 3000. Каким образом огранизовать это дело? Ведь не в ручную в javascript записывать координаты 3000 объектов. 

14 комментариев
Владислав Турман
28 января 2016, 00:28

Сам список у вас где-то хранится, в каком формате?

А фильтровать надо по каким критериям?

Список всех объектов храниться в excel файле. В нем и описание обектов и их координаты.Первый фильтр к примеру по территории, второй по типу объекта, пример: Краснодар, памятники - и выводятся балуны памятников в Краснодаре. Прочитал что формат файла нужен csv.

Я правильно понимаю, что проблема именно в процессе фильтрации? У вас есть 3000 объектов и вы хотите выбрать все объекты, находящиеся на территории Краснодара, но не знаете как?

Да.

Отсортировать по какому-то признаку объекта легко - см. пример http://api.yandex.ru/maps/jsbox/geoobjects_menu

 

А вот по географическим признакам сложнее. Для того, чтобы определить, попадает ли объект на территорию Краснодара, нужно иметь координаты, которые описывают территорию Краснодара.

Через апи можно получить только границы регионов. А вот границы городов мы через апи не отдаем.

То есть в задаче "отфильтровать по городу" проблема не техническая, а контентная - нужно откуда-то брать границы городов.

У вас случайно нет примера, где вывод объектов из файла и хоть какой то фильтр стоит, по накатанному подобью под себя.

Нет, но алгоритм такой.

1. Загружаете файл.

2. Парсите его, вытаскиваете координаты и данные

3. Их полученных данных создаете выборку geoQuery

4. Фильтруете в выборке объекты по признакам

Хорошо, спасибо:) Цены бы вам не было, если бы был наглядный пример всего этого функционала который мне нужен.

У вас очень частный кейс. В основном данные поставляются в апи в одном из принятых форматов - geoJson, geoXml или что-то типа того. На эти форматы примеров много и модули под них заточены.

Может вам стоит формировать ответ сервера в стандартном формате, тогда не придется парсить данные на клиенте.

Возможно и стоит.

Особенно "быстро" это будет работат, если эти фильтры на лету надо перетыкать :-D

Не очень поняла ремарку - если надо на лету перетыкать, фильтрация на клиенте будет работать быстрее, чем посылать запрос на сервер и там делать фильтрацию (в общем случае).

Владислав Турман
28 января 2016, 00:28

По алгоритму, давайте возьмем php.

Загружаете на сервер файл.

достаете с помощью готовых инструемнтов список ваших 3к элементов (за php классом для работы с excel в яндекс).

Отдаете их на клиент в виде xml, json или как вам приятнее.

На клиенте эти данные кладете в коллекцию и с этой коллекцией можете уже работать с помощью geoQuery.

господа модераторы, я прав?

угу