最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Mysql計(jì)算地址經(jīng)緯度距離實(shí)時(shí)位置

 更新時(shí)間:2022年04月29日 09:14:27   作者:kenx  
最近工作中遇到了一個(gè)附近門店的功能,下面這篇文章主要給大家介紹了關(guān)于如何利用Mysql計(jì)算地址經(jīng)緯度距離實(shí)時(shí)位置的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近在做項(xiàng)目時(shí)候,遇到一個(gè)這樣子的需求,

點(diǎn)到卡包里面卡券使用使用,需要展示卡券使用附近門店,

思路

數(shù)據(jù)庫(kù)地址表設(shè)計(jì)

  • 通用的區(qū)域街道地址表tz_sys_area
字段名稱類型備注
area_idbigint區(qū)域ID
area_namevarchar(32)區(qū)域名稱
parent_idbigint所屬父區(qū)域ID
levelint層級(jí)
typechar區(qū)域類型0國(guó)家1省份直轄市2地市3區(qū)縣
area_namevarchar(32)區(qū)域名稱
parent_idbigint所屬父區(qū)域ID
levelint層級(jí)

后臺(tái)也可以做修改

四級(jí)區(qū)域地址數(shù)據(jù)來(lái)源我在網(wǎng)上找的json文件然后按照格式倒入到的數(shù)據(jù)庫(kù)

  • 門店地址表tz_address

需求實(shí)現(xiàn)

  • 這里計(jì)算距離就需要用到經(jīng)緯度

需要使用高德地圖api接口地理/逆地理編碼獲取地址經(jīng)緯度并保存

 /**
     * 地理/逆地理編碼
     * https://lbs.amap.com/api/webservice/guide/api/georegeo
     *
     * @return
     */
    public String addressToLongitude(String address) {
        String longitude = "";
        String urlString = "?key={key}&address={address}&output=JSON";
        String response = restTemplate.getForObject(ApiAction.API_GEOREGO_TEST + urlString, String.class, apiKey, address);
        if (StrUtil.isEmpty(response)) {
            return null;
        }
        JSONObject jsonObject = JSON.parseObject(response);
        String code = jsonObject.getString("infocode");
        if (code.equals("10000")) {
            JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
            JSONObject jsonObject1 = (JSONObject) jsonArray.get(0);
            longitude = jsonObject1.get("location").toString();
        } else {
            return null;
        }
        return longitude;
    }

使用

 private Address setlngAndLat(Address address) {
        String addr = address.getProvince() + address.getCity() + address.getArea() + address.getAddr();
        String longitude = gaoDeService.addressToLongitude(addr);
        if (StrUtil.isBlank(longitude)) {
            throw new BusinessException("地址經(jīng)緯度識(shí)別識(shí)別");
        }
        String lat = longitude.split(",")[1];
        String lng = longitude.split(",")[0];

        address.setLat(lat);
        address.setLng(lng);
        return address;
    }
  • MySQL根據(jù)經(jīng)緯度計(jì)算地址距離當(dāng)前位置
 SELECT
               (
                       6371 * acos(
                                   cos(radians(#{lat}))
                                   * cos(radians(lat))
                                   * cos(radians(lng) - radians(#{lng}))
                               + sin(radians(#{lat}))
                                       * sin(radians(lat))
                       )
                   ) AS distance
        FROM tz_user_addr where addr_id=#{storeAddrId}

總結(jié)

到此這篇關(guān)于如何利用Mysql計(jì)算地址經(jīng)緯度距離實(shí)時(shí)位置的文章就介紹到這了,更多相關(guān)Mysql計(jì)算地址經(jīng)緯度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談MySQL觸發(fā)器的原理以及使用

    淺談MySQL觸發(fā)器的原理以及使用

    這篇文章主要介紹了淺談MySQL觸發(fā)器的原理以及使用,觸發(fā)器的執(zhí)行不需要使用 CALL 語(yǔ)句來(lái)調(diào)用,也不需要手工啟動(dòng),只要一個(gè)預(yù)定義的事件發(fā)生就會(huì)被 MySQL自動(dòng)調(diào)用,需要的朋友可以參考下
    2023-05-05
  • 詳細(xì)解讀MySQL的觸發(fā)器trigger

    詳細(xì)解讀MySQL的觸發(fā)器trigger

    觸發(fā)器是由事件來(lái)觸發(fā)某個(gè)操作,這些事件包括INSERT、UPDATE和DELETE語(yǔ)句。如果定義了觸發(fā)程序,當(dāng)數(shù)據(jù)庫(kù)執(zhí)行這些語(yǔ)句的時(shí)候就會(huì)激發(fā)觸發(fā)器執(zhí)行相應(yīng)的操作,需要的朋友可以參考下
    2023-05-05
  • mysql如何讓左模糊查詢也能走索引

    mysql如何讓左模糊查詢也能走索引

    這篇文章主要介紹了mysql如何讓左模糊查詢也能走索引,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL中使用case when 語(yǔ)句實(shí)現(xiàn)多條件查詢的方法

    MySQL中使用case when 語(yǔ)句實(shí)現(xiàn)多條件查詢的方法

    今天在一個(gè)應(yīng)用中使用到了一個(gè)比較特殊的數(shù)據(jù)查詢要求。需要的朋友可以參考下。
    2010-12-12
  • MySQL?Buffer?Pool如何提高頁(yè)的訪問速度

    MySQL?Buffer?Pool如何提高頁(yè)的訪問速度

    本文主要介紹了MySQL?Buffer?Pool如何提高頁(yè)的訪問速度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • MYSQL數(shù)據(jù)庫(kù)管理之權(quán)限管理解讀

    MYSQL數(shù)據(jù)庫(kù)管理之權(quán)限管理解讀

    這篇文章主要介紹了MYSQL數(shù)據(jù)庫(kù)管理之權(quán)限管理解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 史上最簡(jiǎn)單的MySQL數(shù)據(jù)備份與還原教程(下)(三十七)

    史上最簡(jiǎn)單的MySQL數(shù)據(jù)備份與還原教程(下)(三十七)

    這篇文章主要為大家詳細(xì)介紹了史上最簡(jiǎn)單的MySQL數(shù)據(jù)備份與還原教程下篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Mysql?中的多表連接和連接類型詳解

    Mysql?中的多表連接和連接類型詳解

    這篇文章詳細(xì)介紹了MySQL中的多表連接及其各種類型,包括內(nèi)連接、左連接、右連接、全外連接、自連接和交叉連接,通過(guò)這些連接方式,可以將分散在不同表中的相關(guān)數(shù)據(jù)組合在一起,從而進(jìn)行更復(fù)雜的查詢和分析,感興趣的朋友一起看看吧
    2025-01-01
  • MySQL中的redo log和undo log日志詳解

    MySQL中的redo log和undo log日志詳解

    MySQL日志系統(tǒng)中最重要的日志為重做日志redo log和歸檔日志bin log,后者為MySQL Server層的日志,前者為InnoDB存儲(chǔ)引擎層的日志。今天通過(guò)本文給大家介紹MySQL中的redo log和undo log日志,感興趣的朋友一起看看吧
    2021-07-07
  • MySQL 存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)分析

    MySQL 存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)分析

    存儲(chǔ)過(guò)程(Stored Procedure)是一種在數(shù)據(jù)庫(kù)中存儲(chǔ)復(fù)雜程序,以便外部程序調(diào)用的一種數(shù)據(jù)庫(kù)對(duì)象。本文將分析存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)
    2021-05-05

最新評(píng)論

兴山县| 宜春市| 绥江县| 墨玉县| 綦江县| 丘北县| 思南县| 安乡县| 盐津县| 禹州市| 奉化市| 禹城市| 晋城| 海城市| 思茅市| 无锡市| 五家渠市| 兖州市| 福鼎市| 辛集市| 鄱阳县| 察雅县| 宕昌县| 含山县| 新闻| 容城县| 西峡县| 玛纳斯县| 英德市| 叶城县| 新巴尔虎左旗| 新密市| 八宿县| 桐梓县| 高陵县| 双江| 临清市| 虎林市| 西贡区| 塔河县| 正安县|