Я выполняю функцию поиска, которая занимает два поля: Начальный почтовый индекс и Конечный почтовый индекс. Предполагается, что поиск запрашивает базу данных и собирает любые записи, которые попадают в радиус для обоих почтовых индексов. Я могу получить записи, но после этого мне нужно узнать расстояние между почтовыми индексами. Я знаю, как использовать API GMaps, чтобы сделать это, но мне нужно сделать это локально с PHP для повышения производительности (циклическая обработка нескольких записей и т. Д.). Для производительности было бы очень плохо делать это с помощью API. Какие-либо предложения?
Просто чтобы прояснить: мне нужно кодовое решение для расчета расстояния между двумя почтовыми индексами без использования API. Возможно ли это и если да, то как?
PHP предпочтительнее, но даже логическая идея, представленная на любом языке, мне подходит.
Если у вас есть широта и долгота, вы можете рассчитать расстояние между двумя точками без API, просто используя этот код:
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles<br>";
Сохраните Lat Lon, когда сохраните запись, а затем решите ее. Это означает, что вызов Google Maps API сохранится.