Зоны доставки на Яндекс картах. Бесплатное решение для Битрикс от автора блога.

Всем привет! Наконец-то у меня дошли руки до реализации своего собственного решения для Битрикс Маркетплейса.

Собственно встречайте: Зоны доставки на Яндекс картах

Данное решение позволяет рисовать и отображать зоны доставки на Яндекс картах.

Ну и небольшой демонстрационный видос, как пользоваться решением:

Яндекс карты: расстояние до ближайшего полигона

Выкладываю на всеобщее обозрение скрипт роутинга маршрута до ближайшего полигона с подсчетом расстояния до него.
На хабре и других ресурсах не встретил вменяемого решения.

Основная «фишка» в алгоритме. После клика по некой точке вне полигона происходит следующее:

  1. Определяется индекс полигона, расстояние до которого минимально. (просто берём все вершины полигона и ищем расстояние от них до той точки, на которую кликнули. Ищем минимальное расстояние. Сравниваем с минимальными расстояниями других полигонов.)
  2. Определяем геометрический центр ближайшего полигона (к примеру, по оси X — это центр линии с вершинами самой левой и самой правой вершины полигона; аналогично — с осью Y)
  3. Строим маршрут от точки, куда кликнули до этого геометрического центра.
  4. Делим маршрут на отрезки и для каждого отрезка определяем — лежит ли он внутри полигона или нет
  5. Все отрезки, лежащие вне полигона — добавляем в некий массив отрезков, который и будет искомым маршрутом
  6. Находим тот отрезок, который пересекает наш полигон (перебираем каждую грань полигона и проверяем функцией пересечения отрезков с заранее известными координатами)
  7. Находим точку пересечения этого отрезка и полигона и её добавляем в искомый массив отрезков.
  8. Строим маршрут.

Читать далее

Отображение Яндекс карт в Битрикс

Довольно часто на сайтах клиентов требуется реализовать отображение Яндекс карт:

yamap1

При этом необходимо, чтобы контент-менеджер не заморачивался с настройкой отображения. В Битриксе реализация оказалась довольно простой.

Читать далее