사용자의 현재 위치를 얻는 세 가지 방법이 있습니다:
(동영상 공유 학습: 프로그래밍 입문)
1. wx.getLocation (주로 wx.openLocation과 함께 사용됨)
현재 정확도 가져오기 위도, 속도. 승인이 필요하지 않습니다. 유형이 gcj02로 설정되면 wx.openLocation에 사용할 수 있는 좌표가 반환됩니다
2, wx.chooseLocation
인증이 필요합니다. 지도를 열어 위치를 선택하세요
처음 메소드가 호출될 때 먼저 나타납니다. time
권한을 허용한 후 다시 나타납니다.
처음 허용되지 않으면 wx.chooseLocation의 실패 메소드가 항상 호출됩니다
3 wx.openLocation
이 필요합니다. 인증을 받고 WeChat에 내장된 지도를 사용하여 위치를 확인합니다. 주로 출발지부터 도착지까지의 경로를 확인하는데 사용됩니다
인증 방법은 3가지가 있습니다:
1, wx.getSetting
사용자의 현재 설정을 가져오고, 미니 프로그램에서 요청한 설정만 가져옵니다.
2.wx.openSetting
과 유사한 반환 값 Permissions에 미니 프로그램이 사용자에게 요청한 권한만 표시됩니다. 다음
3 과 유사한 설정 인터페이스, wx.authorize
는 사용자에게 사전에 인증 요청을 시작합니다. 호출이 이루어진 후 애플릿이 특정 기능을 사용하거나 사용자 데이터의 일부를 가져오는 데 동의하는지 여부를 즉시 사용자에게 묻는 팝업 창이 표시되지만 해당 인터페이스는 실제로 호출되지 않습니다. 사용자가 이전에 승인에 동의한 경우 팝업 창이 나타나지 않고 바로 성공이 반환됩니다. , 다음과 유사합니다
wx.authorize가 나타나는 것입니다
문제는 wx.chooseLocation()을 사용하여 처음으로 권한을 얻었으나 거부된 다음 wx.getSetting( ) 다시 얻으려면 권한을 어떻게 해야 하나요?
아이디어: wx.chooseLocation()에는 실패 메소드가 있습니다. 첫 번째 거부 이후 지도를 선택하기 위한 후속 호출이 이를 트리거하면 실패 메소드에서 wx.getSetting()을 사용할 수 있습니다. 허가가 부여되었는지 여부.
1단계: 위치 지정 방법은 여러 번 사용될 수 있으므로 호출하기 쉽도록 App.js에 위치 지정 방법을 작성했습니다.
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 }) } }) } }) },})
2단계: 주소를 얻어야 하는 페이지에서:
var app = getApp(); Page({ data:{ addr:'请选择位置' }, //选择获取地理位置 getAddress:function(){ var that=this; app.getPermission(that); //传入that值可以在app.js页面直接设置内容 }, })
최종 렌더링:
휴대폰에서 얻은 최종 위치 편차는 그리 크지 않습니다.
wx.openSetting 업데이트에 대한 참고 사항.
버전 2.3.0부터는 사용자가 클릭한 후에만 설정 페이지로 이동하여 인증 정보를 관리할 수 있습니다. 즉, 버전 2.3.0 이후에는 위의 wx.showModal의 콜백 함수를 통해 wx.openSetting을 호출합니다. 다음 오류가 발생했습니다:
openSetting:fail은 사용자 TAP 제스처로만 호출할 수 있습니다.
하지만 2.2.4~2.3.1을 테스트할 때 위의 오류가 나타납니다.
2.3.2 이상에서는 이 문제가 발생하지 않습니다. . . . . . . .
그리고 2.0.8~2.2.3을 테스트하면 다음과 같은 오류가 나타납니다. . . . . .
다른 사람들은 이런 문제가 없습니다. 이해가 안 돼요. . .
관련 추천:
미니 프로그램 개발 튜토리얼위 내용은 미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!