Поиск ближайших автошкол на карте

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

Общая схема взаимодействия выглядит примерно так:

scheme

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

Чему равен радиус квадрата?

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

Поэтому искать будем внутри квадрата со стороной 2*радиус.

Координаты

Вторая проблема – координаты.

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

globus

Широта. 1 градус широты – это примерно 111,1 километров. Отсюда 1 км = 1/111,1 градус.

Долгота. Вот тут уже сложнее. Если считать Землю шаром, то 1 градус долготы = 111,1 км * косинус(широты). Отсюда 1 км = 1 / (111,1 км * косинус(широты)). Долготу берем из координат адреса.

Осталось все это показать на карте.

screen

Приглашаю всех потестировать. Примеры:

город Москва, 5-й Монетчиковский переулок, 9
город Киров, улица Московская, 25г

UPD. Дописал расчет расстояния до автошколы.

Кстати, как вы думаете, какие еще сервисы были бы полезны Автобегиннеру?

2 комментария on "Поиск ближайших автошкол на карте"

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

  2. Спасибо автор, не извращенец а помощник :)))

Got something to say? Go for it!