mysql — Использование формулы Haversine для тренировки расстояния между двумя почтовыми индексами в переполнении стека

Я пытаюсь использовать формулу Haversine в php, чтобы определить расстояние между двумя почтовыми индексами; До сих пор я создал функцию для определения расстояния. Моя таблица базы данных называется ‘postcode’, а поля ‘postcode_id’, ‘postcode’, ‘lat’, ‘lng’.

    <script>
function getDistance($latitude1, $longitude1, $latitude2, $longitude2) {
$earth_radius = 6371;

$postLat = deg2rad($latitude2 - $latitude1);
$postLon = deg2rad($longitude2 - $longitude1);

$a = sin($postLat/2) * sin($postLat/2) + cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * sin($postLon/2) * sin($postLon/2);
$c = 2 * asin(sqrt($a));
$d = $earth_radius * $c;

return $d;
}
</script>

<?php
$postcode_qry = mysqli_query($connect, "SELECT *,(((acos(sin((".$postLat."*pi()/180)) * sin(('lat'*pi()/180))+cos((".$postLat."*pi()/180)) * cos(('lat'*pi()/180)) * cos(((".$postLon."- 'lng')*pi()/180))))*180/pi())*60*1.1515) as distance
FROM `postcode` WHERE distance = ".$d."");

?>

-1

Решение

Вы можете запросить его с помощью службы Google:

    function getLongLat($address) {
$url = 'http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&language=nl&address='+$address;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
$obj = simplexml_load_string($response);
if ($obj) {
$obj = $obj->result;
return array( 'latitude' => $obj->geometry->location->lat.'', 'longitude' => $obj->geometry->location->lng.'',);
}else{
return [];
}

}

Google попытается проанализировать адрес для вас, угадывая postal code, Country должен работать для вас как адрес, а затем вы можете передать необходимые данные MySQL функция

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector