<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### laravel6+mongo使用 #### 利用經緯度查詢附近店鋪 1. 方法1 自動計算每個點的距離 ```php //map_geo 為經緯度字段,array類型,2dsphere索引 $data = self::query()->raw(function ($collection) use ($lon,$lat,$maxDistance,$limit) { $aggregate = []; $aggregate[]['$geoNear'] = [ 'near'=>['type'=>"Point", 'coordinates'=>[$lon,$lat]], 'distanceField'=>'distance', 'includeLocs'=>'map_geo', 'spherical'=> true, 'skip' =>($page-1)*$limit,//跳過的條數 'limit'=>$limit,//查看的條數 'maxDistance' => $maxDistance, ]; //這里還可以繼續添加各種條件 return $collection->aggregate($aggregate)->toArray(); }); dd($data); ``` 2. 方法二 需要通過經緯度計算距離 ```php //map_geo 為經緯度字段,array類型,2dsphere索引 $allData = self::where('map_geo','near',[ '$geometry'=>[ 'type' => 'Point',//固定寫法 'coordinates' => [$lon,$lat], ], '$maxDistance' => $maxDistance,//最大范圍米 ])->where('is_del',0); if($industryCategoryId){ $allData = $allData->where(['industry_category'=>(int)$industryCategoryId]); } $allData = $allData->select('is_identity_card','last_receive_order_time','assure_credit') ->paginate($limit)->get()->toArray(); ``` 3. 計算兩點間距離的方法 ```php /** *計算地球表面2點之間的球面距離,返回米數 * @param $lat1 * @param $lon1 * @param $lat2 * @param $lon2 * @param $radius * @return float */ if(! function_exists('distance')){ function distance($lat1, $lon1, $lat2, $lon2, $radius = 6378140) { $rad = floatval(M_PI / 180.0); $lat1 = floatval($lat1) * $rad; $lon1 = floatval($lon1) * $rad; $lat2 = floatval($lat2) * $rad; $lon2 = floatval($lon2) * $rad; $theta = $lon2 - $lon1; $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta) ); if ($dist < 0) { $dist += M_PI; } $dist = ceil($dist * $radius); return $dist; } } ```
                  <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>

                              哎呀哎呀视频在线观看