Maison  >  Article  >  Applet WeChat  >  Comment le mini-programme obtient-il la position actuelle de l'utilisateur ?

Comment le mini-programme obtient-il la position actuelle de l'utilisateur ?

王林
王林avant
2021-01-29 09:58:245359parcourir

Comment le mini-programme obtient-il la position actuelle de l'utilisateur ?

Il existe trois façons d'obtenir la position actuelle de l'utilisateur :

(Partage de vidéos d'apprentissage : Introduction à la programmation)

1. wx.getLocation (principalement utilisé avec wx.openLocation)

Obtenez la précision, la latitude et la vitesse actuelles. Aucune autorisation n'est requise. Lorsque le type est défini sur gcj02, les coordonnées pouvant être utilisées pour wx.openLocation sont renvoyées

2. wx.chooseLocation

nécessite une autorisation. Ouvrez la carte et sélectionnez l'emplacement

<.> lors de l'appel de la méthode pour la première fois,

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?

apparaît, puis

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?

apparaît une fois l'autorisation autorisée. Si cela n'est pas autorisé la première fois, wx sera appelé tout le temps. La méthode d'échec de ChooseLocation

3 wx.openLocation

nécessite une autorisation et utilise la carte intégrée de WeChat pour afficher. l'emplacement. Principalement utilisé pour vérifier l'itinéraire du point de départ au point d'arrivée

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?

Il existe trois méthodes d'autorisation :

1 wx.getSetting

<.>Obtenir l'utilisateur Le paramètre actuel de , seules les autorisations que le mini-programme a demandées à l'utilisateur apparaîtront dans la valeur de retour, similaire à ce qui suit

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?2. wx.openSetting

Affichez l'interface de sélection des paramètres d'autorisation. Seules les autorisations que le mini-programme a demandées à l'utilisateur apparaîtront dans l'interface de configuration, similaire à ce qui suit

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?3. wx.authorize

Initiez les demandes d'autorisation aux utilisateurs à l'avance. Une fois l'appel effectué, une fenêtre contextuelle demandera immédiatement à l'utilisateur s'il accepte d'autoriser l'applet à utiliser une certaine fonction ou à obtenir certaines données de l'utilisateur, mais l'interface correspondante ne sera pas réellement appelée. Si l'utilisateur a préalablement accepté l'autorisation, aucune fenêtre pop-up n'apparaîtra et le succès sera renvoyé directement. , similaire à ce qui suit

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?Voici ce que wx.authorize apparaît

Le problème est le suivant : si j'utilise wx.chooseLocation() pour la première fois pour obtenir l'autorisation est refusée, puis utiliser wx.getSetting() pour récupérer l'autorisation. Que dois-je faire ?

Idée : wx.chooseLocation() a une méthode d'échec. Si après le premier rejet, les appels suivants pour sélectionner la carte déclencheront cela, alors je peux utiliser wx.getSetting() dans la méthode d'échec, comme ceci. Vous pouvez déterminer si l'autorisation a été accordée à chaque fois.

Étape 1 : Étant donné que la méthode de positionnement peut être utilisée plusieurs fois, j'ai écrit la méthode de positionnement dans App.js pour faciliter l'appel

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[&#39;scope.userLocation&#39;]) {
                        wx.showModal({
                            title: &#39;是否授权当前位置&#39;,
                            content: &#39;需要获取您的地理位置,请确认授权,否则地图功能将无法使用&#39;,
                            success: function (tip) {
                                if (tip.confirm) {
                                    wx.openSetting({
                                        success: function (data) {
                                            if (data.authSetting["scope.userLocation"] === true) {
                                                wx.showToast({
                                                    title: &#39;授权成功&#39;,
                                                    icon: &#39;success&#39;,
                                                    duration: 1000
                                                })
                                                //授权成功之后,再调用chooseLocation选择地方
                                                wx.chooseLocation({
                                                    success: function(res) {
                                                        obj.setData({
                                                            addr: res.address
                                                        })
                                                    },
                                                })
                                            } else {
                                                wx.showToast({
                                                    title: &#39;授权失败&#39;,
                                                    icon: &#39;success&#39;,
                                                    duration: 1000
                                                })
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                fail: function (res) {
                    wx.showToast({
                        title: &#39;调用授权窗口失败&#39;,
                        icon: &#39;success&#39;,
                        duration: 1000
                    })
                }
            })
        }
    })        
   },})

Étape 2 : Obtenez-la en cas de besoin Dans la page d'adresse :

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

Rendu final :

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?L'écart de localisation final obtenu sur le téléphone mobile n'est pas trop important.

Remarques sur la mise à jour de wx.openSetting .

À partir de la version 2.3.0, les utilisateurs peuvent accéder à la page des paramètres et gérer les informations d'autorisation uniquement après avoir cliqué

Autrement dit, après la version 2.3.0, j'ai réussi le wx.showModal. ci-dessus L'erreur suivante se produira lors de l'appel de wx.openSetting dans la fonction de rappel :

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?openSetting:fail ne peut être invoqué que par le geste TAP de l'utilisateur.

Mais J'ai testé 2.2. L'erreur ci-dessus apparaîtra de .4 à 2.3.1.

2.3.2 et supérieur n'auront pas ce problème. . . . . . . .

Et quand je testerai les versions 2.0.8 à 2.2.3, l'erreur suivante apparaîtra. . . . . .

Comment le mini-programme obtient-il la position actuelle de lutilisateur ?D’autres n’ont pas ce problème. Je ne comprends pas. . .

Recommandations associées :

Tutoriel de développement de mini-programmes

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer