2016-08-08 35 views
0

Ich habe eine Tabelle, in der ich den Service und Spalten der Service-Tabelle ist die Länge, Länge, d. H. Standort eines Dienstes.Wie berechnet man die Entfernung zwischen zwei Orten in Kilometern, in PHP?

Jetzt möchte ich den aktuellen Standort des Benutzers und suchen Sie die verfügbaren Dienste rund 10 Kilometer Entfernung zum Benutzer.

Dafür habe ich gesucht, wie man den Abstand zwischen zwei Standorten berechnet und versuchte einen der Code, aber es gibt mir einige Syntaxfehler in JSON.

Der Fehler ist Syntaxfehler, (unerwartetes 'S'), auch bekomme ich durch diese Formel das Ergebnis in Kilometern nicht.

 public function searchVendors($lattitudeFrom,$longitudeFrom) 
    { 
     $lattitudeTo = -10.4212157; 
     $longitudeTo = 28.6031842; 


     $dist = $this -> haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000); 

     return $dist; 

    } 

public function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000) 
{ 
    // convert from degrees to radians 
    $latFrom = deg2rad($latitudeFrom); 
    $lonFrom = deg2rad($longitudeFrom); 
    $latTo = deg2rad($latitudeTo); 
    $lonTo = deg2rad($longitudeTo); 

    $latDelta = $latTo - $latFrom; 
    $lonDelta = $lonTo - $lonFrom; 

    $angle = 2 * asin(sqrt(pow(sin($latDelta/2), 2) + 
     cos($latFrom) * cos($latTo) * pow(sin($lonDelta/2), 2))); 
    return $angle * $earthRadius; 
} 

getVendors.php

<?php 

header("Content-type: application/json"); 

    // if ($_SERVER['REQUEST_METHOD']=='POST') { 
     include_once ("../include/Vendor.php"); 
    try { 

    $con = DB::getConnection(); 

    $raw = file_get_contents("php://input"); 
    $data = json_decode($raw, true); 

    $longitude = $data->longitude; 
    $lattitude = $data->lattitude; 

    $v = new Vendor(); 
    $response = $v -> searchVendors($lattitude,$longitude); 


    json_encode($response); 


    echo $response; 

     if ($response == null) { 
      $response = json_encode(array("result" => -2, "message" => "Empty result")); 
      echo $response; 
     } else { 
      echo $response; 
     } 
    } catch(Exception $e) { 
     $result = array("result" => -1, "message" => $e -> getMessage()); 
     echo json_encode($result); 
     } 
//} 
?> 

Wie kann ich das erreichen? Kann jemand bitte helfen .. Sehr neu in PHP.

+0

Können Sie die vollständige Fehlermeldung mit dem Dateinamen und Zeile liefern Nummer? –

Antwort

0

php cal_dist (a, b, Schlüssel = keine, spec = km)

+0

Willkommen bei Stack Overflow! Während dieser Code-Schnipsel, die Frage lösen kann, [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich hilft, die Qualität Ihrer Post zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

0

Versuchen Sie diesen Code für find Entfernung in km oder Meilen

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 

     $theta = $lon1 - $lon2; 
     $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
     $dist = acos($dist); 
     $dist = rad2deg($dist); 
     $miles = $dist * 60 * 1.1515; 
     $unit = strtoupper($unit); 

     if ($unit == "K") { 
     return ($miles * 1.609344); 
     } else if ($unit == "N") { 
      return ($miles * 0.8684); 
     } else { 
      return $miles; 
      } 
    } 
+0

habe diesen Code versucht, immer noch den gleichen Syntaxfehler, irgendetwas falsch in meinem anderen Code? @Rax Shah –