#经度
$lng = $data["lng"];
#纬度
$lat = $data["lat"];
#获取指定范围的数据单位km
$distance_sea = 100;
#数据模型
$model = MembersLocations::where('id','>',0);
$distance = "ACOS(SIN(( $lat * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS(( $lat* 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS(( $lng* 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6380";
$model->select(['id',*.....])
$model->addSelect(DB::raw($distance . ' as distance'))->orderBy('distance', 'ASC');
#控制范围
$model->whereRaw($distance . "<" . $distance_sea);
$data = $model->orderBy("tml_id", "desc")->get();
foreach ($data as $v) {
#计算距离
$v->distance = sprintf("%.2f", $v->distance) . "km";
}
php-laravel根据经纬度获取数据并按距离排序
于 2023-11-23 10:57:32 首次发布