私はサービスを格納しているテーブルを持っており、サービステーブルの列は緯度、経度、つまりサービスの場所です。phpで2つの場所の間の距離をキロメートルで計算する方法は?
今、私はユーザーの現在の位置を取得し、利用可能なサービスをユーザーから約10キロメートル離れた場所で検索したいと考えています。
これについては、2つの場所の距離を計算する方法を検索し、コードの1つを試しましたが、JSONで構文エラーが発生しています。
エラーは構文エラーです(予期しない 'S')。また、この数式でキロメートルで結果を取得しません。
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);
}
//}
?>
私はこれをどのように達成することができますか?誰でも助けてくれますか?PHPで非常に新しいです。
を見つけるの距離のために、このコードを試してみてください、あなたは、ファイル名と行との完全なエラーメッセージを提供することができます数? –