2016-03-25 13 views
-1

İki posta kodu arasındaki mesafeyi hesaplamak için Haversine Formülünü php'de kullanmaya çalışıyorum; Şimdiye kadar mesafeyi çözmek için bir fonksiyon yarattım. Veritabanı tablomuz 'postcode' ve 'postcode_id', 'postcode', 'lat', 'lng' alanları olarak adlandırılır.Haversine Formula'yı kullanarak, PHP'de iki posta kodu arasındaki mesafeyi ölçmek için

<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

Ancak çok fazla örnek var!!!?!? !! – Strawberry

+0

@Strawberry detaylandırır ve belki bu örneklerden birine bağlantı verebilir misiniz? – JackDaniels

+0

Bu forumda 'haversine' veya 'longitude' için arama yapın. Veya 'enlem boylamı' etiketini tıklayın. –

cevap

1

Sen google hizmeti ile bunu talep edebilir:

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 []; 
     } 

    } 

tarihinde denemek ve adres olarak sizin için çalışması gerektiğini postal code, Country tahmin, sizin için adresini ayrıştırmak ve gerekli verileri geçebilir daha olacak MySQL işlevinize

+0

Bu, iki nokta arasındaki mesafeyi nasıl veriyor? –

+0

Yapmıyor, ama OP'in sorusunun içeriğini okursanız, o zaten matematiği yerinde görüyor, ancak ihtiyaç duyduğu yerlerin koordinatlarını kaçırıyordu. Bu yüzden benim cevabımın sonunda benim yorumum ... – DarkBee

+0

Ayrıca [tutar] (http://stackoverflow.com/q/36261299/50447) [soran] (http://stackoverflow.com/q/36234233/50447) [aynı] (http://stackoverflow.com/q/36216670/50447) [soru] (http://stackoverflow.com/q/36205761/50447), [yanıtlandı] olmasına rağmen (http://stackoverflow.com/a/36205860/50447) –

İlgili konular