日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

地图的电子围栏功能的技术选型

發(fā)布時(shí)間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 地图的电子围栏功能的技术选型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需求說(shuō)明

電子圍欄

  • 根據(jù)坐標(biāo)篩選處附近的坐標(biāo)
  • 支持多邊形數(shù)據(jù)存儲(chǔ)
  • 查找當(dāng)前的坐標(biāo)落在哪個(gè)幾何圖形內(nèi)(圓,多邊形)
  • 現(xiàn)有解決方案

    • mysql 自定義函數(shù)計(jì)算
    • mysql geo索引
    • mongodb geo索引
    • postgresql PostGis索引
    • redis geo
    • ElasticSearch
    • 高德地圖開(kāi)放接口

    最終選型結(jié)果mongodb

    技術(shù)選型簡(jiǎn)要分析

    mysql

    搜索資料極少,看來(lái)很少有人選用

    mysql 8 之前版本

    但使用SQL語(yǔ)句進(jìn)行查詢的缺點(diǎn)也顯而易見(jiàn),每條SQL的計(jì)算量都會(huì)非常大,有時(shí)候要十幾秒才能出結(jié)果,性能將會(huì)是嚴(yán)重的問(wèn)題。

    mysql 8

    mysql 有專門(mén)支持位置的存儲(chǔ)類型 geo 索引,但是檢索依然感覺(jué)稍微復(fù)雜,并且效率還是有些問(wèn)題。

    redis
  • 添加 獲取 地理位置的坐標(biāo)。

  • 計(jì)算兩個(gè)位置之間的距離。

  • 根據(jù)用戶給定的經(jīng)緯度坐標(biāo)來(lái)獲取指定范圍內(nèi)的地理位置集合。

  • 根據(jù)儲(chǔ)存在位置集合里面的某個(gè)地點(diǎn)獲取指定范圍內(nèi)的地理位置集合。

    缺點(diǎn):不支持多邊形,矩形 相關(guān)的搜索

  • Elasticsearch

    ? 我們經(jīng)常使用的滴滴打車,美團(tuán)送餐,美國(guó)的 Uber, Lyft 打車,還有一些交友 apps 等等,它們都是使用 Elasticsearch 進(jìn)行位置搜索

    1. 找出與指定位置在給定距離內(nèi)的點(diǎn)。 2. 找出與指定點(diǎn)距離在給定最小距離和最大距離之間的點(diǎn) 3. 找出落在指定矩形框中的點(diǎn) 4. 找出落在多邊形中的點(diǎn)

    但是無(wú)法 根據(jù)點(diǎn)搜索 所在的多邊形

    mongodb

    ? 可以滿足需求 查找當(dāng)前的坐標(biāo)落在哪個(gè)多邊形內(nèi)

    ? 網(wǎng)上搜索資料注定還是不夠健全,建議參考詳細(xì)的文檔 ,有些操作是必須加2dsphere索引的,有些非必須。整體功能還是非常強(qiáng)大的。

  • $geoIntersects 地理空間數(shù)據(jù)與指定GeoJSON對(duì)象.

    GeoJson對(duì)象有 點(diǎn),線,單環(huán)多邊形,多環(huán)多邊形,點(diǎn)列表,線列表,集合對(duì)象體,混合類型。

    意思也就是說(shuō) 可以查詢 多邊形與上述形狀 相交的集合數(shù)據(jù)

  • $geoWithin 查詢?cè)诙噙呅?單環(huán),多環(huán),多邊形集)內(nèi)的 集合數(shù)據(jù)。
  • 除了多邊形。還可以 $box矩形、$center圓、$centerSphere球體內(nèi)的數(shù)據(jù)集合

  • $near 返回地理空間由遠(yuǎn)到近的文檔的點(diǎn),可以計(jì)算距離。地理空間,就是上面的GeoJson 對(duì)象 包含的類型
  • 高德地圖-獵鷹[軌跡服務(wù)]

    ? 地址鏈接

    ? 軌跡圍欄:創(chuàng)建 更新 刪除 查詢 電子圍欄。

    ? 可以創(chuàng)建圍欄形狀,圓形,多邊形,線性,行政區(qū)圍欄

    ? 可以直接查詢指定坐標(biāo)與圍欄關(guān)系

    了解到高德地圖的時(shí)候,功能已經(jīng)使用開(kāi)發(fā)完了,實(shí)際上看起來(lái)感覺(jué) 高德更加方便一些

    ? 缺點(diǎn) :需要上傳到云端數(shù)據(jù),和調(diào)用接口限制。

    最終技術(shù)方案思路
    需求簡(jiǎn)介

    用戶打開(kāi)手機(jī)app 或者 小程序,獲取用戶當(dāng)前坐標(biāo),推薦附近的店鋪(可以理解為連鎖加盟)。

    每一個(gè)店鋪,在地圖上劃分自己的經(jīng)營(yíng)范圍,也就是電子圍欄,有圓形,有多邊形。

    疑難1:但是圓形和多邊形又是不一樣的搜索方式。

    疑難2:圓形僅支持搜索圓形范圍內(nèi)的點(diǎn),但是我們現(xiàn)在需求是通過(guò)點(diǎn)搜索它在哪個(gè)圓內(nèi)。

    實(shí)現(xiàn)思路:

    1 多邊形:根據(jù)坐標(biāo)搜索多邊形

    2 圓形:疑難2的解決思路

    ? 根據(jù)要搜索的當(dāng)前坐標(biāo) + 最大范圍的半徑 搜索 范圍內(nèi)的點(diǎn),在根據(jù)距離計(jì)算,當(dāng)前搜索到的點(diǎn)的半徑大于 兩點(diǎn)間的距離


    具體代碼我會(huì)上傳到github上去,采用php laravel + mongo 實(shí)現(xiàn)

    總結(jié)

    以上是生活随笔為你收集整理的地图的电子围栏功能的技术选型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。