Точки в пределах n км от маршрута / пути - PullRequest
3 голосов
/ 05 апреля 2011

Я хотел бы использовать API карт Google для создания маршрута между офисами моих клиентов и одним из их клиентов.

Затем я хотел бы найти клиентов (из моей внутренней базы данных), которые находятся в пределахнапример, 10 миль по обе стороны от этого маршрута.

По сути, я хочу повторить эту функцию: http://gis5.com/pois_along_route/gm_pois_along_route.php

Буду признателен за любые указатели, которые могут у вас быть на этом

1 Ответ

8 голосов
/ 08 апреля 2011

В общем, вы должны найти расстояние от заданной точки (ваш клиент) и полилинии (маршрут). Маршрут из ответа о направлениях Google разделен на ветви, а часть состоит из нескольких шагов ... На каждом шаге у вас есть массив путей [] (пара широты и долготы). Давайте назовем каждое местоположение в массиве path [] «Вершиной». Вы должны выполнить итерацию по всем вершинам маршрута (получить все вершины со всех шагов в маршруте) и рассчитать расстояние между ломаной, созданной из текущих "наблюдаемых" вершин, и вашей POI (Точки интереса - Клиенты) Наименьшее расстояние можно рассчитать, представив две вершины и местоположение клиента в виде nVector. После этого, выполнив Векторное произведение векторов, вы найдете кратчайшее (ортогональное) расстояние между точкой и ломаной У меня недавно была похожая проблема, и я решил ее таким образом. Я понял идею из примеров Здесь (посмотрите на пример ТОЧКА РАССТОЯНИЯ ПОЛИЛИНУ ИЛИ ПОЛИГОНА Исходный код )

Если вы не понимаете, что такое математика, возможно, эта ссылка может помочь вам, объяснив концепцию Vector Cross Product . Также это также может помочь вам понять концепцию nVector.

Поскольку этот вид расчета расстояния занимает довольно много времени (если у вас много клиентских местоположений в базе данных), вам может быть интересно отфильтровать некоторые местоположения из базы данных и не выполнять для них вычисления ... посмотрите на мой ответ на этот вопрос о том, как выполнить фильтрацию по местоположениям на основе маршрута, который показан на карте. Надеюсь, что это поможет и даст вам некоторое представление о том, как начать решать вашу проблему. Мне потребовалось много времени, чтобы понять это. Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...