<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                1.收到的參數 ~~~dart @param latitude 緯度 @param longitude 經度 ~~~ 2.將經緯度換算成范圍及范圍距離 ~~~php /** * @desc 根據傳入的經緯度,和距離范圍,返回所有在距離范圍內的經緯度的取值范圍 * @param $lng 坐標點經度 * @param $lat 坐標點緯度 * @param $distance 范圍直徑單位:km * @return array */ public function location_range($lng, $lat,$distance=0){ //不傳默認1km $distance = $distance??1; $earthRadius = 6378.137;//單位km,地球的直徑 $d_lng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat))); $d_lng = rad2deg($d_lng); $d_lat = $distance/$earthRadius; $d_lat = rad2deg($d_lat); //開始跟結束不能亂,BETWEEN查詢必須從小到大 return array( 'lat_start' => sprintf("%.6f",$lat - $d_lat),//緯度開始 'lat_end' => sprintf("%.6f",$lat + $d_lat),//緯度結束 'lng_start' => sprintf("%.6f",$lng - $d_lng),//緯度開始 'lng_end' => sprintf("%.6f",$lng + $d_lng),//緯度結束 'distance' => $distance*1000 //限制的距離 ); } ~~~ 3.查詢數據庫 ~~~php /** * 獲取范圍內的數據列表 * @param latitude string 緯度 * @param longitude string 經度 */ public function get_range_list($data) { $where = "u.status = 1";//查詢條件 $param = [];//參數化條件 $scope = $this->location_range($data['longitude'],$data['latitude']); $where .= " and (u.longitude between :lng_start and :lng_end ) and (u.latitude between :lat_start and :lat_end )"; $param['lng_start'] = $scope['lng_start']; $param['lng_end'] = $scope['lng_end']; $param['lat_start'] = $scope['lat_start']; $param['lat_end'] = $scope['lat_end']; //限制的距離(加上該條件,搜索范圍才會被限制在一個圈內) $where .= " and ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((:latitude_1 * PI() / 180 - u.latitude * PI() / 180 ) / 2),2) + COS(:latitude_2 * PI() / 180) * COS(u.latitude * PI() / 180) * POW(SIN((:longitude_1 * PI() / 180 - u.longitude * PI() / 180) / 2),2))) * 1000) <= :distance"; $param['distance'] = $scope['distance']; $param['latitude_1'] = $data['latitude']; $param['latitude_2'] = $data['latitude']; $param['longitude_1'] = $data['longitude']; $sql = "SELECT u.id, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$data['latitude']} * PI() / 180 - u.latitude * PI() / 180 ) / 2),2) + COS({$data['latitude']} * PI() / 180) * COS(u.latitude * PI() / 180) * POW(SIN(({$data['longitude']} * PI() / 180 - u.longitude * PI() / 180) / 2),2))) * 1000) AS distance FROM USER AS u WHERE { $where } LIMIT 0, 10"; return DB::select($sql, $param);//laravel框架的一種寫法 } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看