店鋪經緯度計算距離然後分頁排序

2021-09-11 20:54:50 字數 2047 閱讀 9355

根據經緯度計算距離,根據距離排序或者是根據店鋪銷量排序

**如下

<?php

/** * topapi

* * -- user.shop.list

* -- 店鋪分頁距離排序

*/ /**

* 介面作用說明

*/public $apidescription = '店鋪列表';

/*** 定義api傳入的應用級引數

* @desc 用於在呼叫界面前,根據定義的引數,過濾必填引數是否已經參入,並且定義引數的資料型別,引數是否必填,引數的描述

* @return array 返回傳入引數

*/public function setparams()

public function handle($params)

##分類

if($params['cat_id'])

$select_shop = array_column($setting,'shop_id');

$ids = implode(',',$select_shop);

$where = $where. " and shop_id in ($ids)";

}##排序

if($params['sort'] == 0)elseif($params['sort'] == 1)else

##看看是否可以在sql語句中計算距離然後排序分頁,但是有乙個問題

##即,那些沒有經緯度的店鋪總是排序到最前面

##待解決 資料庫經緯度字段預設為0

$data['shop_list'] = $qb->select("shop_id,shop_name,seller_id,shop_logo,shop_area,shop_addr,goodsnum,fansnum,longitude,latitude,is_recommend,

(round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - ( * pi()) / 180) / 2),

2) + cos(( * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - ( * pi()) / 180) / 2),

2))))) as distance

")->from('sysshop_shop')

->where("")

->setfirstresult($start)->setmaxresults($pagesize)

->orderby($order,$by)

->execute()

->fetchall();

foreach ($data['shop_list'] as $key=>$value)

}return $data;}/*

* 1.緯度1,經度1,緯度2,經度2

* 2.返回結果是單位是km。

* 3.保留一位小數

*/function getdistance($lat1,$lng1,$lat2,$lng2)

##另外一種距離分頁計算排序

public function otherdistance($where,$params,$start,$pagesize)")

->execute()

->fetchall();

##距離計算

if($params['sort'] ==1 && $params['longitude'])else}}

##排序

if($params['sort'] == 0)elseif($params['sort'] == 1)

##把之前的新增資料置為空

foreach ($data['shop_list'] as $key=>$value)

}##分頁

$data['shop_list'] = array_slice($data['shop_list'], $start, $pagesize);

return $data;

}}

給定經緯度計算距離 根據兩點經緯度計算距離

根據兩點經緯度計算距離 這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地 球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩 極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯 圈 構成這些圓圈的...

經緯度計算距離 經緯度計算,別讓數學拖你後腿

已知乙個的經度 緯度 long1,lat1 距離d 以km為單位 和方位角 以度為單位 求新的經度 緯度 long2,lat2 這個問題在大地測量學中非常受歡迎。舉個例子 點a 123.2329 32.5946 求北偏東45度方向,200千公尺處的點b long2,lat2 經緯度。在計算之前,首先...

根據經緯度計算距離 Java

根據兩個位置的經緯度,來計算兩地的距離 單位為km 引數為double型別 long1 位置1經度 lat1 位置1緯度 long2 位置2經度 lat2 位置2緯度 public class distanceutils 根據兩個位置的經緯度,來計算兩地的距離 param longitudeuser...