2016-03-25 1 views
-1

Я пытаюсь использовать Формулу Хаверсина в php для определения расстояния между двумя почтовыми индексами; До сих пор я создал функцию для определения расстояния. Моя таблица базы данных называется «почтовый индекс» и поля «postcode_id», «postcode», «lat», «lng».Использование Haversine Formula для тренировки расстояния между двумя почтовыми индексами в PHP

<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.""); 

?> 
+0

Но есть так много примеров!?!?!? !! – Strawberry

+0

@ Strawberry вы могли бы разработать и, возможно, дать мне ссылку на один из этих примеров, пожалуйста. – JackDaniels

+0

Искать в этом форуме для 'haversine' или 'longitude'. Или нажмите на тег «широта долготы». –

ответ

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

+0

Как это дает расстояние между двумя точками? –

+0

Это не так, но если вы читаете содержание вопроса ОП, то видите, что он уже имеет математику на месте, но не хватает координат мест, в которых он нуждался, рассчитал расстояние между ними. Отсюда мой комментарий в конце моего ответа ... – DarkBee

+0

Он также [хранит] (http://stackoverflow.com/q/36261299/50447) [спрашивает] (http://stackoverflow.com/q/36234233/50447) [тот же] (http://stackoverflow.com/q/36216670/50447) [вопрос] (http://stackoverflow.com/q/36205761/50447), хотя [был дан ответ] (http://stackoverflow.com/a/36205860/50447) –

 Смежные вопросы

  • Нет связанных вопросов^_^