小程序怎樣獲取用戶當(dāng)前位置-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)小程序怎樣獲取用戶當(dāng)前位置的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),源匯網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:源匯等地區(qū)。源匯做網(wǎng)站價格咨詢:028-86922220

有三種方式可以獲取用戶當(dāng)前位置:

1、wx.getLocation(多與wx.openLocation一起用)

獲取當(dāng)前的精度、緯度、速度。不需要授權(quán)。當(dāng)type設(shè)置為gcj02 返回可用于wx.openLocation的坐標(biāo)

2、wx.chooseLocation

需要授權(quán),打開地圖選擇位置

第一次調(diào)用方法時先出現(xiàn)

小程序怎樣獲取用戶當(dāng)前位置

允許權(quán)限之后之后再出現(xiàn)

小程序怎樣獲取用戶當(dāng)前位置

如果第一次就不允許,則一直調(diào)用wx.chooseLocation的fail方法

3、wx.openLocation

需要授權(quán),使用微信內(nèi)置地圖查看位置。多半用于查看起點(diǎn)到終點(diǎn)的路線怎么走

小程序怎樣獲取用戶當(dāng)前位置

授權(quán)方法有三種:

1、wx.getSetting

獲取用戶的當(dāng)前設(shè)置,返回值中只會出現(xiàn)小程序已經(jīng)向用戶請求過的權(quán)限,類似下面的樣子

小程序怎樣獲取用戶當(dāng)前位置

2、wx.openSetting

調(diào)起權(quán)限設(shè)置選擇界面,設(shè)置界面只會出現(xiàn)小程序已經(jīng)向用戶請求過的權(quán)限,類似下面的樣子

小程序怎樣獲取用戶當(dāng)前位置

3、wx.authorize

提前向用戶發(fā)起授權(quán)請求。調(diào)用后會立刻彈窗詢問用戶是否同意授權(quán)小程序使用某項(xiàng)功能或獲取用戶的某些數(shù)據(jù),但不會實(shí)際調(diào)用對應(yīng)接口。如果用戶之前已經(jīng)同意授權(quán),則不會出現(xiàn)彈窗,直接返回成功。,類似下面的樣子

小程序怎樣獲取用戶當(dāng)前位置

這就是wx.authorize出現(xiàn)的內(nèi)容

問題來了:假如我第一次使用wx.chooseLocation()獲取權(quán)限被拒絕,然后使用wx.getSetting()來重新獲取權(quán)限該怎么做呢?

思路:wx.chooseLocation()有fail方法,如果第一次拒絕之后,以后調(diào)用選擇地圖都是觸發(fā)的這個,那么我可以在fail方法里面,使用wx.getSetting(),這樣就每次都能判斷是否已經(jīng)給與了權(quán)限了。

第一步:由于有可能會多次使用定位的方法,所以我把定位的方法寫到App.js中,方便調(diào)用

App({
    //獲取用戶地理位置權(quán)限
    getPermission:function(obj){
      wx.chooseLocation({
        success: function (res) {    
            obj.setData({
                addr: res.address      //調(diào)用成功直接設(shè)置地址
            })                
        },
        fail:function(){
            wx.getSetting({
                success: function (res) {
                    var statu = res.authSetting;
                    if (!statu['scope.userLocation']) {
                        wx.showModal({
                            title: '是否授權(quán)當(dāng)前位置',
                            content: '需要獲取您的地理位置,請確認(rèn)授權(quán),否則地圖功能將無法使用',
                            success: function (tip) {
                                if (tip.confirm) {
                                    wx.openSetting({
                                        success: function (data) {
                                            if (data.authSetting["scope.userLocation"] === true) {
                                                wx.showToast({
                                                    title: '授權(quán)成功',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                                //授權(quán)成功之后,再調(diào)用chooseLocation選擇地方
                                                wx.chooseLocation({
                                                    success: function(res) {
                                                        obj.setData({
                                                            addr: res.address
                                                        })
                                                    },
                                                })
                                            } else {
                                                wx.showToast({
                                                    title: '授權(quán)失敗',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                fail: function (res) {
                    wx.showToast({
                        title: '調(diào)用授權(quán)窗口失敗',
                        icon: 'success',
                        duration: 1000
                    })
                }
            })
        }
    })        
   },})

第二步:在需要獲取地址的頁面中:

var app = getApp();
Page({
   data:{
        addr:'請選擇位置'         
    },
    //選擇獲取地理位置
    getAddress:function(){
          var that=this;
      app.getPermission(that);    //傳入that值可以在app.js頁面直接設(shè)置內(nèi)容        }, 
})

最終效果圖:

小程序怎樣獲取用戶當(dāng)前位置

最終在手機(jī)上獲取到的位置偏差不太大。

更新     wx.openSetting   的注意事項(xiàng)。

2.3.0 版本開始,用戶發(fā)生點(diǎn)擊行為后,才可以跳轉(zhuǎn)打開設(shè)置頁,管理授權(quán)信息

即2.3.0版本之后,我通過上面的wx.showModal的回調(diào)函數(shù)來調(diào)用wx.openSetting 會發(fā)生下面的錯誤:

小程序怎樣獲取用戶當(dāng)前位置

openSetting:fail can only be invoked by user TAP gesture.

但是我測試 2.2.4 開始 到2.3.1 都會出現(xiàn)上面這種錯誤。

2.3.2及以上又不會出現(xiàn)這種問題。。。。。。。。

而且當(dāng)我測試2.0.8 到  2.2.3  會出現(xiàn)下面的錯誤。。。。。。

小程序怎樣獲取用戶當(dāng)前位置

感謝各位的閱讀!關(guān)于“小程序怎樣獲取用戶當(dāng)前位置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

本文標(biāo)題:小程序怎樣獲取用戶當(dāng)前位置-創(chuàng)新互聯(lián)
文章地址:http://www.muchs.cn/article44/dhjche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站改版Google、外貿(mào)建站、網(wǎng)站內(nèi)鏈企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司