Клуб API Карт

Создание карты с определением радиуса, и нанесением его на карту...

Дробков Александр
6 декабря 2013, 00:03
Добрго времени суток всем! Никогда не сталкивался с картами, а тут пришлось... И задачка оказалась не излегких... для меня.... Может кто-то и поможет с реализацией...

Есть csv файл с примерной структурой:

Номер;Заболевание;Статус активности;Радиус зоны отчуждения (в метрах);Срок действия (в днях);Широта;Долгота;Дата заболевания;Дата активности;Комментарии

1;Болезнь_1;0;700;25;44.514541;48.708958;12.11.2013;;Заболевание активно в зимний период

2;Болезнь_2;1;620;25;43.889694;49.004373;24.11.2013;27.11.2013;Комментарий отсутствует

и т.д...

Необходимо подтянуть информациию с этого файла и вывести на карту. Если статус активности равен 1, то нанести радиус равный указанному с центром по координатам...

Еще, что я ВООБЩЕ не представляю как, истечение даты активности и дата заболевания должно делать метку полупрозрачной или менять ее цвет... Типа история...

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

Я понимаю, что без Бд здесь не обойтись.. Проблем с запросами и созданием самой БД нет... Проблема в реализации на картах...  Я думаю уходить от файла и грузить его в автоматическом режиме в БД, а от туда цеплять в яндекс-карты... Может кто что подсказать?

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

А в чем именно-то проблема? Нужно распарсить файл, сохранить в базу и написать скрипт на клиенте, который будет делать ajax запрос, смотреть текущую дату и на основе её выставлять нужные опции геообъектам.

API Яндекс Карт позволяет создавать круги любого радиуса, заливать их любым цветом и выставлять им необходимую прозрачность.

Вот класс Circle, опции можно посмотреть в GeoObject (fill*) а примеры реализации в нашей песочнице.

Идея интересная. Я бы сделал так.

На сервере мы делаем некое АПИ, которое фильтрует, группирует (подготавливает) данные для выгрузки на карту. На входе — границы видимости карты, и, возможно, какие-то ваши специфические фильтры. Хотя, если данных не очень много — то можно и сразу все выгружать, но в подготовленном для отображения виде. Сервер отдает JSON с болезнями и по датам ставит модификатор отображения (которую вы позже сделаете как прозрачность, или цвет, или форму меток).

На клиенте вы спрашиваете этот JSON, передавая координаты (границы видимости) и свои фильтры, и выводите все, что прислал сервер, на карту. Вид метки определяете из модификатора вида, чтобы не усложнять логику отображения. Если карта сдвигается — в идеале спрашиваете только ту область, которая ранее была не видна. Если зум +/- — хорошо бы использовать кластеры при отдалении, если меток тысячи.

Радиус, как уже подсказали, можно рисовать через Cirlce, и связывать его с первоначальной меткой. Для начала лучше рисовать просто метки, и дальше уже играться с формами отображения. Можете, для начала, руками подготовить JSON файлик, грузить его на клиенте, и рисовать, а параллельно кто-то (или после вы сами) сделаете интерфейс для загрузки этих данных.

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