騰訊地圖類快遞自動(dòng)填寫(xiě)收發(fā)貨地址功能

開(kāi)發(fā)場(chǎng)景

獲取當(dāng)前位置信息或者某地的行政區(qū)劃信息或者街道信息,實(shí)現(xiàn)類似電商平臺(tái)填寫(xiě)收貨地址功能贡未。

技術(shù)選型

微信小程序JavaScript SDK

微信小程序插件

確定業(yè)務(wù)邏輯及頁(yè)面設(shè)計(jì)

以簡(jiǎn)潔大氣為主冲秽,樣式選擇weui井厌。

image.png

詳細(xì)開(kāi)發(fā)過(guò)程

1瘸右、首先注冊(cè)小程序妆档,我以前有就沒(méi)重新申請(qǐng)蒸痹。

2春弥、注冊(cè)騰訊位置服務(wù)開(kāi)發(fā)者

需要注意的是:個(gè)人開(kāi)發(fā)者接口調(diào)用數(shù)是有限額的,免費(fèi)額度1W叠荠,并發(fā)數(shù)5匿沛,申請(qǐng)成為企業(yè)用戶可免費(fèi)提升更大配額。

3榛鼎、根據(jù)文檔開(kāi)發(fā)逃呼。

文檔寫(xiě)的比較全,很多地方都是例子者娱,不過(guò)需要注意以下幾個(gè)點(diǎn):

1)reverseGeocoder接口返回?cái)?shù)據(jù)和文檔不一致抡笼,需要根據(jù)實(shí)際返回值編寫(xiě),另外有些字段在返回值中不一定有黄鳍,最好用hasOwnProperty進(jìn)行判斷后賦值推姻。

2)實(shí)際上文檔有點(diǎn)亂,需要查看多個(gè)地方的文檔框沟。

文檔參考地址:

https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html

https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview

JS代碼

//index.js
//獲取應(yīng)用實(shí)例
const app = getApp()
const chooseLocation = requirePlugin('chooseLocation');
var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js');
var qqmapsdk = new QQMapWX({
  key: '申請(qǐng)的Key'
});
 
Page({
  data: {
    recommend:'無(wú)地址信息',
    address:'無(wú)地址信息',
    name:'無(wú)區(qū)劃信息',
    adcode:'無(wú)代碼信息',
    business_area_title:'無(wú)商圈信息',
    crossroad_title:'無(wú)路口信息',
    town:'無(wú)街道信息',
    jingweidu:'無(wú)經(jīng)緯度信息',
    landmark:'無(wú)附近地標(biāo)',
  },
  onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
      console.log(res.target)
    }
    return {
      title: '行政區(qū)劃藏古、街道信息查詢',
      path: '/page/index/index'
    }
  },
  onShareTimeline: function(){
    return {
      title: '行政區(qū)劃增炭、街道信息查詢',
    }
  },
  onLoad: function () {
     // 實(shí)例化API核心類
      wx.getSetting({
        success: (res) => {
          // res.authSetting['scope.userLocation'] == undefined    表示 初始化進(jìn)入該頁(yè)面
          // res.authSetting['scope.userLocation'] == false    表示 非初始化進(jìn)入該頁(yè)面,且未授權(quán)
          // res.authSetting['scope.userLocation'] == true    表示 地理位置授權(quán)
          if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
            wx.showModal({
              title: '請(qǐng)求授權(quán)當(dāng)前位置',
              content: '需要獲取您的地理位置,請(qǐng)確認(rèn)授權(quán)',
              success: function (res) {
                if (res.cancel) {
                  wx.showToast({
                    title: '拒絕授權(quán)',
                    icon: 'none',
                    duration: 1000
                  })
                } else if (res.confirm) {
                  wx.openSetting({
                    success: function (dataAu) {
                      if (dataAu.authSetting["scope.userLocation"] == true) {
                        wx.showToast({
                          title: '授權(quán)成功',
                          icon: 'success',
                          duration: 1000
                        })
                        //再次授權(quán)拧晕,調(diào)用wx.getLocation的API
                        this.getLocation();
                      } else {
                        wx.showToast({
                          title: '授權(quán)失敗',
                          icon: 'none',
                          duration: 1000
                        })
                      }
                    }
                  })
                }
              }
            })
          } else if (res.authSetting['scope.userLocation'] == undefined) {
            //調(diào)用wx.getLocation的API
            this.getLocation();
          }
          else {
            //調(diào)用wx.getLocation的API
            this.getLocation();
          }
        }
      })
  },
  getLocation: function(){
    var vm = this;
    wx.getLocation({
      type:'gcj02',
      success: function(res){
          app.globalData.latitude=res.latitude;
          app.globalData.longitude=res.longitude;
          vm.getaddressinfo();
      },
      fail:function(res){
        console.log("獲取經(jīng)緯度失敗"+JSON.stringify(res))
      }
    })
  },
  onShow: function(){
    var vm = this;
    const location = chooseLocation.getLocation();
    if(location!=null){
      app.globalData.latitude=location.latitude;
      app.globalData.longitude=location.longitude;
      this.getaddressinfo();
    }
  },
  getaddressinfo: function(){
    let vm = this;
    qqmapsdk.reverseGeocoder({
      location: {
        latitude:  app.globalData.latitude,
        longitude: app.globalData.longitude
      },
      get_poi: 1, //是否返回周邊POI列表:1.返回隙姿;0不返回(默認(rèn)),非必須參數(shù)
      success: function(res) {//成功后的回調(diào)
        var result = res.result;
        //推薦地址
        app.globalData.recommend = result.formatted_addresses.recommend;
        // 行政區(qū)劃 name    
        app.globalData.name = result.ad_info.name;
        //常規(guī)地址 address 
        app.globalData.address = result.address;
        //行政區(qū)劃代碼 adcode 
        app.globalData.adcode = result.ad_info.adcode;
 
        if(result.address_reference.hasOwnProperty("business_area")){
          //商圈 business_area_title
          app.globalData.business_area_title = result.address_reference.business_area.title+" "+result.address_reference.business_area._dir_desc;
        }
 
        if(result.address_reference.hasOwnProperty("crossroad")){
        //路口 crossroad_title
          app.globalData.crossroad_title = result.address_reference.crossroad.title+" "+result.address_reference.crossroad._dir_desc;
        }
        //街道
        if(result.address_reference.hasOwnProperty("town")){
          //路口 crossroad_title
            app.globalData.town = result.address_reference.town.title+" "+result.address_reference.town._dir_desc;
          }
        if(result.address_reference.hasOwnProperty("landmark_l2")){
            app.globalData.landmark = result.address_reference.landmark_l2.title;
        }
        if(result.address_reference.hasOwnProperty("landmark_l1")){
            app.globalData.landmark = result.address_reference.landmark_l1.title;
        }
        vm.setData({
          recommend: result.formatted_addresses.recommend,
          name: result.ad_info.name,
          address: result.address,
          adcode: result.ad_info.adcode,
          business_area_title: app.globalData.business_area_title,
          crossroad_title: app.globalData.crossroad_title,
          town: app.globalData.town,
          jingweidu: result.location.lat+", "+result.location.lng,
          landmark: app.globalData.landmark,
        });
 
 
      },
      fail: function(error) {
        console.error(error);
      },
      complete: function(res) {
       // console.log(res);
      }
    })
  },
  onUnload () {
    // 頁(yè)面卸載時(shí)設(shè)置插件選點(diǎn)數(shù)據(jù)為null,防止再次進(jìn)入頁(yè)面防症,geLocation返回的是上次選點(diǎn)結(jié)果
    chooseLocation.setLocation(null);
},
  getUserInfo: function(e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  change: function(){
    const key = '使用在騰訊位置服務(wù)申請(qǐng)的key'; 
    const referer = '這是哪'; //調(diào)用插件的app的名稱
    const location = JSON.stringify({
      latitude: app.globalData.latitude,
      longitude: app.globalData.longitude
    });
    const category = '生活服務(wù),娛樂(lè)休閑';
    wx.navigateTo({
      url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&location=' + location + '&category=' + category
    });
  },
})

效果

image.png

作者:w_boyang

鏈接:https://blog.csdn.net/qq_34136569/article/details/111281654

來(lái)源:CSDN

著作權(quán)歸作者所有孟辑。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處蔫敲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饲嗽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奈嘿,更是在濱河造成了極大的恐慌貌虾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裙犹,死亡現(xiàn)場(chǎng)離奇詭異尽狠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)叶圃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)袄膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掺冠,你說(shuō)我怎么就攤上這事沉馆。” “怎么了德崭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵斥黑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我眉厨,道長(zhǎng)锌奴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任憾股,我火速辦了婚禮鹿蜀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荔燎。我一直安慰自己耻姥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布有咨。 她就那樣靜靜地躺著,像睡著了一般蒸健。 火紅的嫁衣襯著肌膚如雪座享。 梳的紋絲不亂的頭發(fā)上婉商,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音渣叛,去河邊找鬼丈秩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛淳衙,可吹牛的內(nèi)容都是我干的蘑秽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼箫攀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肠牲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起靴跛,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缀雳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后梢睛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肥印,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年绝葡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了深碱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藏畅,死狀恐怖敷硅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情墓赴,我是刑警寧澤竞膳,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站诫硕,受9級(jí)特大地震影響坦辟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜章办,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一锉走、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藕届,春花似錦挪蹭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春词顾,著一層夾襖步出監(jiān)牢的瞬間八秃,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工肉盹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔驱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓上忍,卻偏偏與公主長(zhǎng)得像骤肛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窍蓝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容