геолокация — Как рассчитать расстояние между двумя точками в километрах, в php?

У меня есть таблица, в которой я храню сервис, а в столбцах таблицы сервиса — широта, долгота, то есть местоположение сервиса.

Теперь я хочу узнать текущее местоположение пользователя и выполнить поиск доступных служб на расстоянии около 10 километров от него.

Для этого я искал, как рассчитать расстояние между двумя местоположениями, и попробовал один из кодов, но он дает мне некоторую синтаксическую ошибку в 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.

0

Решение

php cal_dist (a, b, ключ = нет, spec = км)

0

Другие решения

Попробуйте этот код, чтобы найти расстояние в километрах или милях

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

По вопросам рекламы [email protected]