Для сайта avtobeginner.ru задумал написать сервис по поиску ближайших к вам автошкол. Т.е. вводите свой адрес, и на карте показываются автошколы в радиусе х километров. Согласитесь, очень удобно. О том, как это все реализовывалось и о том, с какими трудностями я столкнулся – расскажу в этом посте. Использовать будем Яндекс.Карты.
Общая схема взаимодействия выглядит примерно так:

Т.е. получаем от пользователя адрес, получаем его координаты, вычисляем автошколы, попадающие в заданный радиус и показываем их пользователю.
Чему равен радиус квадрата?
Первая неприятность появилась в самом начале. API Яндекс.Карт не позволяет рисовать круги. Можно рисовать по точкам с помощью инструмента «Многоугольник». Но прибавьте в этому вычисление попадания точки внутрь круга + проблемы с координатами – получите несусветный геморрой.
Поэтому искать будем внутри квадрата со стороной 2*радиус.
Координаты
Вторая проблема – координаты.
Мы привыкли измерять расстояния в метрах и километрах, а на карте градусы. Нужно переводить.

Широта. 1 градус широты – это примерно 111,1 километров. Отсюда 1 км = 1/111,1 градус.
Долгота. Вот тут уже сложнее. Если считать Землю шаром, то 1 градус долготы = 111,1 км * косинус(широты). Отсюда 1 км = 1 / (111,1 км * косинус(широты)). Долготу берем из координат адреса.
Осталось все это показать на карте.
Приглашаю всех потестировать. Примеры:
город Москва, 5-й Монетчиковский переулок, 9
город Киров, улица Московская, 25г
UPD. Дописал расчет расстояния до автошколы.
Кстати, как вы думаете, какие еще сервисы были бы полезны Автобегиннеру?




Мля, извращенец в свободное от работы время :-D делать такое…
Спасибо автор, не извращенец а помощник :)))