2016-03-24 13 views
-1

Ich habe mir andere Fragen angesehen, die beantwortet wurden, aber ich bin mir immer noch nicht sicher, wie ich es machen soll;Ausarbeiten der Entfernung zwischen zwei Postleitzahlen

  1. Get UK Postleitzahl Daten einschließlich Länge, Breite, Grid-N und Grid-E in meine Datenbank

  2. Wenn ich eine API verwenden, wie ich vorgehen? Wo fange ich an?

  3. Müsste ich Pythagorus Theorem verwenden, um den Abstand zwischen den beiden Postleitzahlen zu berechnen?
  4. Ich habe eine Tabelle in meiner Datenbank für wenn ein Benutzer eine Eigenschaft hinzufügt. Vielleicht gibt es einen Weg, wenn jemand eine Eigenschaft hinzufügt, er kann diese Postleitzahl zusammen mit den Postleitzahlen andere Informationen (long, lat, grid-ref) in meine Postleitzahlen-Tabelle einfügen, so dass ich den Abstand zwischen den beiden Postleitzahlen berechnen kann.

Dank

+0

Es ist entweder zu viele möglichen Antworten, oder gute Antworten würden für dieses Format zu lang sein. Bitte fügen Sie Details hinzu, um die Antwort einzuschränken oder um ein Problem zu isolieren, das in ein paar Paragrafen beantwortet werden kann. Ich würde vorschlagen, dass Sie ein Entwicklungsforum finden (vielleicht [Quora] (http://www.quora.com/Computer-Programming) ?) um generalities zu erarbeiten. Dann, wenn Sie spezielle Codierprobleme haben, kommen Sie zurück zu StackOverflow und wir helfen Ihnen gerne weiter. –

+0

Als Hinweis, verwenden Sie nicht Pythagorus Theorem, außer für sehr kurze Entfernungen - Sie sind eher die Großraum-Entfernung –

+0

Auch sehenswert [OS OpenData] (https://www.ordnancesurvey.co. uk/opendatadownload/products.html) (die [Meine Gesellschaft Spiegel] (http://parlvid.mysociety.org/os/)) –

Antwort

0

Ich habe eine Klasse ich speziell für diesen Einsatz:

class Geocode 
{ 
    /** 
    * Work out the distance between two sets of lat/lng coordinates as the crow flies. 
    * 
    * @param float $lat1 
    * @param float $lng1 
    * @param float $lat2 
    * @param float $lng2 
    * 
    * @return float 
    */ 
    public static function distance($lat1 = 0.0, $lng1 = 0.0, $lat2 = 0.0, $lng2 = 0.0) { 
     $theta = $lng1 - $lng2; 
     $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
     $dist = acos($dist); 
     $dist = rad2deg($dist); 
     return $dist * 60 * 1.1515; 
    } 

    /** 
    * Get the lat/lng coordinates for an address. 
    * 
    * @param string $address 
    * 
    * @return stdClass 
    */ 
    public static function convert($address = '') 
    { 
     $address = str_replace(" ", "+", urlencode(str_replace(PHP_EOL, ', ', $address))); 
     $url = "https://maps.googleapis.com/maps/api/geocode/json?address={$address}&region=uk&sensor=false"; 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $response = json_decode(curl_exec($ch), TRUE); 

     if($response['status'] != 'OK') { 
      return (object) ['status' => $response['status']]; 
     } 
     $geo = $response['results'][0]['geometry']; 

     return (object) [ 
      'lat'  => $geo['location']['lat'], 
      'lng'  => $geo['location']['lng'], 
      'status' => $response['status'] 
     ]; 
    } 
} 
Verwandte Themen