溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

小程序怎么獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū)

發(fā)布時間:2021-05-22 11:19:34 來源:億速云 閱讀:465 作者:小新 欄目:web開發(fā)

小編給大家分享一下小程序怎么獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

小程序獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū)的方法:

兩種方法:一種是騰訊地圖獲取,另一種是百度地圖獲取

我用的是騰訊地圖獲取步驟如下

小程序怎么獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū)

1、話不多說,直接上干貨

實(shí)現(xiàn)上圖效果,主要技術(shù)是獲取微信小程序地理位置,得到經(jīng)緯度,使用微信小程序JavaScript SDK逆地址解析和地點(diǎn)搜索實(shí)現(xiàn)

2、微信小程序JavaScript SDK

申請開發(fā)者密鑰(key):https://lbs.qq.com/qqmap_wx_jssdk/method-reverseGeocoder.html手機(jī)號注冊即可使用。

下載微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.0 下載完成后放入utils文件夾下引用即可

安全域名設(shè)置,在“設(shè)置” -> “開發(fā)設(shè)置”中設(shè)置request合法域名,添加https://apis.map.qq.com

小程序怎么獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū)

3.詳細(xì)代碼

<view >
   <!-- 搜索框 -->
 <view class='search'>
  <view class='search_box'>
   <image src='../../../images/search.png' class='search_image'></image>
   <input type='text' confirm-type="search" class='search_input' placeholder='搜索地點(diǎn)' placeholder-class='input_placeholder' bindinput="bindInputSchool" ></input>
  </view>
 </view>

 <view class='btn1' bindtap='BackTap2'>
  不顯示位置
 </view>
 <view class='btn2' wx:for="{{pois}}" wx:key="" bindtap='BackTap' data-item='{{index}}'>
   <view >{{item.title}}</view>
   <view class='hint'>{{item.address}}</view>
 </view>
</view>
//獲取應(yīng)用實(shí)例
const app = getApp();
var timer = false;
var QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
var qqmapsdk;
Page({
 data: {
  statusBarHeight: getApp().globalData.statusBarHeight,
  page:1,
  pois:[]
 },
 //返回按鈕
 BackTap: function (e) {
  // console.log(this.data.lists[e.currentTarget.dataset.item])
  app.globalData.addAddr=[]
  app.globalData.addAddr.push(this.data.pois[e.currentTarget.dataset.item])
  wx.navigateBack({
   delta: 1
  })
 },
 BackTap2: function (e) {
  // console.log(this.data.lists[e.currentTarget.dataset.item])
  app.globalData.addAddr=[]
  wx.navigateBack({
   delta: 1
  })
 },
 backTap3:function(){
  wx.navigateBack({
   delta: 1
  })
 },
 onLoad: function () {
  qqmapsdk = new QQMapWX({
   key: 'IOJBZ-VOT3Q-2G55W-G5FJ2-7UIKH-6JBGU'
  });
 },
 onShow: function () {
  let vm = this;
  vm.getUserLocation();
 },
 getUserLocation: function () {
  let vm = this;
  wx.getSetting({
   success: (res) => {
    console.log(JSON.stringify(res))
    // res.authSetting['scope.userLocation'] == undefined  表示 初始化進(jìn)入該頁面
    // res.authSetting['scope.userLocation'] == false  表示 非初始化進(jìn)入該頁面,且未授權(quán)
    // res.authSetting['scope.userLocation'] == true  表示 地理位置授權(quán)
    if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
     wx.showModal({
      title: '請求授權(quán)當(dāng)前位置',
      content: '需要獲取您的地理位置,請確認(rèn)授權(quán)',
      success: function (res) {
       if (res.cancel) {
        wx.showToast({
         title: '拒絕授權(quán)',
         icon: 'none',
         duration: 1000
        })
        vm.BackTap2()
       } 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
           vm.getLocation();
          } else {
           wx.showToast({
            title: '授權(quán)失敗',
            icon: 'none',
            duration: 1000
           })
           vm.BackTap2()
          }
         }
        })
       }
      }
     })
    } else if (res.authSetting['scope.userLocation'] == undefined) {
     //調(diào)用wx.getLocation的API
     vm.getLocation();
    }
    else {
     //調(diào)用wx.getLocation的API
     vm.getLocation();
    }
   }
  })
 },
 // 微信獲得經(jīng)緯度
 getLocation: function () {
  let vm = this;
  wx.getLocation({
   type: 'wgs84',
   success: function (res) {
    console.log(JSON.stringify(res),'獲得經(jīng)緯度')
    var latitude = res.latitude
    var longitude = res.longitude
    vm.setData({
     latitude: latitude,
     longitude: longitude
    })
    vm.getLocal(latitude, longitude)
   },
   fail: function (res) {
     vm.BackTap2()
   }
  })
 },
 // 獲取當(dāng)前地理位置
 getLocal: function (latitude, longitude) {
  let vm = this;
  wx.showLoading({
   title: '加載中',
  })
  qqmapsdk.reverseGeocoder({
   location: {
    latitude: latitude,
    longitude: longitude,
   },
   coord_type:1,
   get_poi: 1,
   poi_options: 'page_size=20;page_index='+vm.data.page,
   success: function (res) {
    console.log(res,'地理位置');
    wx.hideLoading()
    let pois = res.result.pois
    vm.setData({
     pois: vm.data.pois.concat(pois),
    })

   },
   fail: function (res) {
    console.log(res);
   },
   complete: function (res) {
    // console.log(res);
   }
  });
 },
 //根據(jù)坐標(biāo)查詢位置
 bindInputSchool(e) {
  var val = e.detail.value;
  let vm = this
  clearTimeout(timer);
  timer = setTimeout(function () {
   if(val.length>0){
    qqmapsdk.search({
     keyword: val , //搜索關(guān)鍵詞
     location: {
      latitude: vm.data.latitude,
      longitude: vm.data.longitude,
     }, 
     page_size:20,
     success: function (res) {
      console.log(res, '搜索位置');
      let pois = res.data
      vm.setData({
       pois: pois,
      })
     },
    });
   }else{
    vm.setData({
     pois:[],
    })
    vm.getLocal(vm.data.latitude, vm.data.longitude)
   }

  }, 500);
 },
 onReachBottom:function(){
  let vm = this;
  vm.setData({
   page:vm.data.page+1
  })
  vm.getLocal(vm.data.latitude, vm.data.longitude)
 },
})

看完了這篇文章,相信你對“小程序怎么獲取當(dāng)前位置加搜索附近熱門小區(qū)及商區(qū)”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI