Maison > Article > Applet WeChat > 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, apparaît, puis 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 ChooseLocation3 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 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
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
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
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['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 }) } }) } }) },})
Étape 2 : Obtenez-la en cas de besoin Dans la page d'adresse :
var app = getApp(); Page({ data:{ addr:'请选择位置' }, //选择获取地理位置 getAddress:function(){ var that=this; app.getPermission(that); //传入that值可以在app.js页面直接设置内容 }, })
Rendu final :
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 :
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. . . . . .
D’autres n’ont pas ce problème. Je ne comprends pas. . .
Recommandations associées :
Tutoriel de développement de mini-programmesCe 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!