Как определить, находится ли адрес за пределами МКАД и, если нет, рассчитать расстояние до него.

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

  • Если адрес доставки находится внутри МКАД, то цена фиксированная, допустим 400
  • Если адрес находится за пределами МКАД, то цена сразу становится 700, кроме того, за каждые 10км удалённости от МКАД к цене добавляется ещё 100.

Из этих двух условий понятно, что основная задача — определить, находится ли адрес внутри МКАД, и если нет, то рассчитать кратчайшее расстояние до него, и не просто прямой отрезок, а маршрут по дороге.

В этой статье вас ждут два готовых скрипта с формой, которые вы просто можете сохранить себе на рабочий стол в виде html-файла и они уже будут работать, отличие между ними в том, что второй скрипт просто определяет, находится ли адрес внутри МКАД и рассчитывает расстояние, а первый ещё и показыват маршрут на Яндекс Картах.

Сначала небольшое видео о том, как это будет работать.

С отображением кратчайшего расстояния на карте

Этот код не просто рассчитывает кратчайшее расстояние, но и чертит маршрут на карте. В коде я постарался оставить как можно больше комментариев, чтобы всё было просто и понятно.

Крайтчайший маршрут от МКАД до заданного адреса

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

Этот код доступен только для зарегистрированных пользователей.

Регистрация Войдите на сайт, если вы уже зарегистрированы »

Несколько комментариев по коду:

  • Для того, чтобы не отображать маршрут на карте, а просто выводить числовое значение, закомментируйте или удалите следующие строки: 140-143, 217, 220, 251-252, 271-272 и 334, либо просто перейдите к следующему готовому коду, в котором я уже всё закомментировал.
  • 8, 306-315 — я привык работать с jQuery, поэтому здесь он используется для асинхронной загрузки API Яндекс Карт и для отслеживания клика по кнопке, но он не лежит в основе скрипта, поэтому вы легко сможете обойтись и без него. И опять-таки, на тот случай, если у вас с этим возникают трудности, следующий пример я сделал на чистом JavaScript.
  • 18-127 — массив координат (широта и долгота) каждого километра МКАД.

Без отображения кратчайшего расстояния, просто расчет и вывод результата (чистый JavaScript).

Всё точно так же, код готовый к использованию — просто вставляете его и смотрите результат.

Этот код доступен только для зарегистрированных пользователей.

Регистрация Войдите на сайт, если вы уже зарегистрированы »

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Другие премиум-посты

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • alex morozov: Ура, спасибо! Все-таки я разобрался ! Сделал:

  • alex morozov: Сделал Класс добаляется даже если поле пустое

  • Vladislav: Лучше бы посоветовали изящное решение имеющейся проблемы.

  • alex morozov: Не очень понял. Я добавляю метабокс через класс, почти как у вас. class Desc_Meta_Box { private $screens = array(...

  • Миша: Метод тыка хорош, но оснвоы нужно знать в любом случае. Рекомендую почитать это.