Heim  >  Artikel  >  WeChat-Applet  >  Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

王林
王林nach vorne
2021-01-29 09:58:245314Durchsuche

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

Es gibt drei Möglichkeiten, den aktuellen Standort des Benutzers abzurufen:

(Teilen von Lernvideos: Einführung in die Programmierung)

1. wx.getLocation (wird hauptsächlich mit wx.openLocation verwendet)

Erhalten Sie die aktuelle Genauigkeit und Breitengrad, Geschwindigkeit. Es ist keine Genehmigung erforderlich. Wenn der Typ auf gcj02 gesetzt ist, werden die Koordinaten zurückgegeben, die für wx.openLocation verwendet werden können.

2, wx.chooseLocation Zeit

Nachdem die Erlaubnis erteilt wurde, wird sie später angezeigt.

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

Wenn dies nicht zum ersten Mal zulässig ist, wird immer die Fail-Methode von wx.chooseLocation aufgerufen

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?3 Autorisierung und nutzt die integrierte Karte von WeChat, um den Standort anzuzeigen. Wird hauptsächlich verwendet, um die Route vom Startpunkt zum Endpunkt zu überprüfen.

Es gibt drei Autorisierungsmethoden:

1, wx.getSetting

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers? Rufen Sie die aktuellen Einstellungen des Benutzers ab und nur diejenigen, die das Miniprogramm angefordert hat Der Rückgabewert „Berechtigungen“ des Benutzers ähnelt dem folgenden:

2. Rufen Sie die Auswahloberfläche für Berechtigungseinstellungen auf. Es werden nur die Berechtigungen angezeigt, die das Miniprogramm vom Benutzer angefordert hat Die Einstellungsschnittstelle ähnelt der folgenden

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

3, wx.authorize

initiiert im Voraus eine Autorisierungsanfrage an den Benutzer. Nach dem Aufruf wird der Benutzer sofort in einem Popup-Fenster gefragt, ob er damit einverstanden ist, dem Applet die Verwendung einer bestimmten Funktion zu erlauben oder einige Benutzerdaten abzurufen. Die entsprechende Schnittstelle wird jedoch nicht aufgerufen. Wenn der Benutzer zuvor der Autorisierung zugestimmt hat, erscheint kein Popup-Fenster und es wird direkt eine Erfolgsmeldung zurückgegeben. , ähnlich dem folgenden

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

Das ist, was wx.authorize erscheint

Das Problem ist: Wenn ich wx.chooseLocation() zum ersten Mal verwende, um die Berechtigung zu erhalten und diese verweigert wird, und dann wx.getSetting( ), um es erneut zu erhalten. Wie erteile ich Berechtigungen?

Idee: wx.chooseLocation() hat eine Fail-Methode. Wenn nach der ersten Ablehnung nachfolgende Aufrufe zur Auswahl der Karte dies auslösen, kann ich wx.getSetting() in der Fail-Methode verwenden, sodass dies jedes Mal möglich ist ob die Erlaubnis erteilt wurde.

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?Schritt eins: Da die Positionierungsmethode mehrmals verwendet werden kann, habe ich die Positionierungsmethode zum einfachen Aufrufen in App.js geschrieben

App({
    //获取用户地理位置权限
    getPermission:function(obj){
      wx.chooseLocation({
        success: function (res) {    
            obj.setData({
                addr: res.address      //调用成功直接设置地址
            })                
        },
        fail:function(){
            wx.getSetting({
                success: function (res) {
                    var statu = res.authSetting;
                    if (!statu['scope.userLocation']) {
                        wx.showModal({
                            title: '是否授权当前位置',
                            content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
                            success: function (tip) {
                                if (tip.confirm) {
                                    wx.openSetting({
                                        success: function (data) {
                                            if (data.authSetting["scope.userLocation"] === true) {
                                                wx.showToast({
                                                    title: '授权成功',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                                //授权成功之后,再调用chooseLocation选择地方
                                                wx.chooseLocation({
                                                    success: function(res) {
                                                        obj.setData({
                                                            addr: res.address
                                                        })
                                                    },
                                                })
                                            } else {
                                                wx.showToast({
                                                    title: '授权失败',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                fail: function (res) {
                    wx.showToast({
                        title: '调用授权窗口失败',
                        icon: 'success',
                        duration: 1000
                    })
                }
            })
        }
    })        
   },})

Schritt zwei: Auf der Seite, auf der die Adresse abgerufen werden muss:

var app = getApp();
Page({
   data:{
        addr:'请选择位置'         
    },
    //选择获取地理位置
    getAddress:function(){
          var that=this;
      app.getPermission(that);    //传入that值可以在app.js页面直接设置内容        }, 
})

Endgültiges Rendering:

Die auf dem Mobiltelefon ermittelte endgültige Positionsabweichung ist nicht zu groß.

Hinweise zur Aktualisierung von wx.openSetting.

Ab Version 2.3.0 können Benutzer erst nach Klicken auf die Einstellungsseite springen und Autorisierungsinformationen verwalten. Das heißt, nach Version 2.3.0 rufe ich wx.openSetting über die Rückruffunktion von wx.showModal auf Folgender Fehler ist aufgetreten:

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

openSetting:fail kann nur durch die TAP-Geste des Benutzers aufgerufen werden.

Aber als ich 2.2.4 bis 2.3.1 getestet habe, erschien der obige Fehler.

2.3.2 und höher werden dieses Problem nicht haben. . . . . . . .

Und wenn ich 2.0.8 bis 2.2.3 teste, erscheint der folgende Fehler. . . . . .

Wie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?

Andere haben dieses Problem nicht. Verstehe es nicht. . .

Verwandte Empfehlungen:

Mini-Tutorial zur Programmentwicklung

Das obige ist der detaillierte Inhalt vonWie ermittelt das Miniprogramm den aktuellen Standort des Benutzers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen