2016-03-25 29 views
-1

私はphversでHaversineの式を使用して2つのポストコード間の距離を計算しようとしています。これまで私は距離を解決する関数を作成しました。私のデータベーステーブルは「postcode」と呼ばれ、フィールドは「postcode_id」、「postcode」、「lat」、「lng」です。Haversine公式を使用してPHPの2つのポストコード間の距離を計算する

<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あなたは精巧で、おそらく私にこれらの例の1つへのリンクをお願いします。 – JackDaniels

+0

このフォーラムで「haversine」または「経度」を検索してください。または、「緯度経度」タグをクリックします。 –

答えて

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

これはどのようにして2点間の距離を与えますか? –

+0

OPの質問の内容を読んでも、彼はすでに数学を持っていますが、距離を計算するのに必要な場所の座標が不足しています。したがって、私の答えの最後に私のコメント... – DarkBee

+0

彼も[維持](http://stackoverflow.com/q/36261299/50447)[asking](http://stackoverflow.com/q/36234233/50447 )[それは答えた](http://www.windowsfiles.jp/fairnetsys/)[同じ](http://stackoverflow.com/q/36216670/50447)[質問](http://stackoverflow.com/q/36205761/50447) /stackoverflow.com/a/36205860/50447) –

関連する問題