Вопрос по php, html5 – рассчитать расстояние

-1

Я проектирую базу данных по подбору персонала, и мне нужно, чтобы она выполняла несколько задач, которые все включают интеграцию способа вычисления расстояния:

1) рассчитать расстояние, на которое кандидат живет от клиента?

2) рассчитать клиентов в радиусе кандидатов, доступных для работы в любой день?

3) подсчет количества кандидатов с правильной квалификацией для вакансии в радиусе клиента.

Как вы можете видеть, мне нужно рассчитать расстояние двумя основными способами: 1) радиусом 2) по прямой линии, я бы предпочел точное расстояние, но первое подойдет. я знаю, что могу интегрировать карты Google или другие веб-карты, но я хочу, чтобы система была автономной, чтобы она могла функционировать без подключения к Интернету. система будет иметь внешний интерфейс HTML5, а внутренний - на Mysql и PHP.

спасибо Biagio

Радиусis как ворона летит ... Rowland Shaw
На SO уже есть сотни вопросов такого рода. Вы пытались искать? eggyal

Ваш Ответ

3   ответа
0

радиус фактически не является «вороной». расстояние от клиента до кандидатов? В любом случае ... вам нужно будет найти алгоритм для вычисления того, что вам нужно, исходя из расстояния между точками.

Если вы хотите, чтобы система была автономной, вам понадобятся значения координат (широта, долгота) точек. Для этого вам, вероятно, понадобится и интернет-соединение, и использование такого сервиса, как Google Maps, для поиска координат на основе адресов точек. Но как только вы сохраните в своей базе данных, вам не понадобится подключение к интернету.

Есть формула для вычисления расстояния между двумя точками на основе координат, вы легко ее найдете :)

Дорогие, все спасибо за ваши ответы, у меня есть формула, и да, часть того, что я ищу, это как мухи. (радиус) вторая часть в БД рассчитывает расстояние от клиента так, чтобы кандидаты подходили в правильном порядке. что я искал сценарий программирования для этого процесса в PHP или что-нибудь? этот сайтfreemaptools.com/map-tools.htm получил именно то, что мне нужно, но мне нужно кодирование для процесса и способ получить бесплатную карту, которую я могу вставить в БД и использовать для построения информации, какие-либо идеи? Biagio
6

6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))

Конечно, это "вороны" приближение в км.

Который можно перевести на php:

$longA     = 2.3458*(M_PI/180); // M_PI is a php constant
$latA     = 48.8608*(M_PI/180);
$longB     = 5.0356*(M_PI/180);
$latB     = 47.3225*(M_PI/180);

$subBA       = bcsub ($longB, $longA, 20);
$cosLatA     = cos($latA);
$cosLatB     = cos($latB);
$sinLatA     = sin($latA);
$sinLatB     = sin($latB);

$distance = 6371*acos($cosLatA*$cosLatB*cos($subBA)+$sinLatA*$sinLatB);
echo $distance ;

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

6371 - радиус Земли в км. Это среднее значение, потому что, конечно, земля не идеальная сфера. Посмотрите в Википедии для получения дополнительной информации об этом:en.wikipedia.org/wiki/Earth_radius
Смотрите мои правки об этом;)
Между нами земля - это не просто сфера. Но я тебя прощу. +1.
Что означает 6371?
2

если ваши клиенты и кандидаты живут в очень ограниченной области, я бы использовал прямоугольную карту и вводил значения x и y для всех городов в этой области в базе данных.

Благодаря теореме Пифагора, вы можете сказать:

расстояние & # XB2; = (клиент x-value - кандидат x-value) & # xB2; + (клиент y-значения - кандидат y-значения) & # xB2;

Похожие вопросы