• uniapp 微信对接地图的三种操作


    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

    1.uni.getLocation 获取当前经维度

     先上代码

    1. let that = this
    2. // 获取用户是否开启 授权获取当前的地理位置、速度的权限。
    3. uni.getSetting({
    4. success (res) {
    5. console.log(res)
    6. // 如果没有授权
    7. if (!res.authSetting['scope.userLocation']) {
    8. // 则拉起授权窗口
    9. uni.authorize({
    10. scope: 'scope.userLocation',
    11. success () {
    12. //点击允许后--就一直会进入成功授权的回调 就可以使用获取的方法了
    13. uni.getLocation({
    14. type: 'wgs84',
    15. success: function (res) {
    16. that.longitude = res.longitude
    17. that.latitude = res.latitude
    18. let jinweidu = {
    19. longitude: res.longitude,
    20. latitude: res.latitude,
    21. }
    22. uni.setStorageSync('jinweidu', jinweidu);
    23. console.log(res)
    24. console.log('当前位置的经度:' + res.longitude)
    25. console.log('当前位置的纬度:' + res.latitude)
    26. that.getlist()
    27. }, fail (error) {
    28. uni.showToast({
    29. title: '获取地址失败,请检查手机是否打开定位功能,未打开将导致部分功能不可用',
    30. icon:'none'
    31. });
    32. }
    33. })
    34. },
    35. fail (error) {
    36. //点击了拒绝授权后--就一直会进入失败回调函数--此时就可以在这里重新拉起授权窗口
    37. console.log('拒绝授权', error)
    38. uni.showModal({
    39. title: '提示',
    40. content: '若点击不授权,将无法使用位置功能',
    41. showCancel: false,
    42. // cancelText: '不授权',
    43. // cancelColor: '#999',
    44. confirmText: '授权',
    45. confirmColor: '#f94218',
    46. success (res) {
    47. console.log(res)
    48. if (res.confirm) {
    49. // 选择弹框内授权
    50. uni.openSetting({
    51. success (res) {
    52. console.log(res.authSetting)
    53. }
    54. })
    55. } else if (res.cancel) {
    56. // 选择弹框内 不授权
    57. console.log('用户点击不授权')
    58. }
    59. }
    60. })
    61. }
    62. })
    63. } else {
    64. // 有权限则直接获取
    65. uni.getLocation({
    66. type: 'wgs84',
    67. success: function (res) {
    68. that.longitude = res.longitude
    69. that.latitude = res.latitude
    70. let jinweidu = {
    71. longitude: res.longitude,
    72. latitude: res.latitude,
    73. }
    74. uni.setStorageSync('jinweidu', jinweidu);
    75. console.log(res)
    76. console.log('当前位置的经度1:' + res.longitude)
    77. console.log('当前位置的纬度1:' + res.latitude)
    78. that.getlist()
    79. }, fail (error) {
    80. uni.showToast({
    81. title: '获取地址失败,请检查手机是否打开定位功能,未打开将导致部分功能不可用',
    82. icon:'none'
    83. });
    84. console.log('失败', error)
    85. }
    86. })
    87. }
    88. }
    89. })
    90. }

    将此方法放到onLoad生命周期内,第一次进入页面会出现授权弹窗(如下图)

      点击允许就可以获取到经纬度了

     如果拒绝授权位置信息的话就会出现弹窗进行提醒,提醒内容可以自己更改。

     这个时候点击弹窗的授权会进入设置页面,允许位置信息再返回就可以获取到经纬度了

    特别注意:

    uni.openSetting调起客户端小程序设置界面,返回用户设置的操作结果,此api只能在小程序中使用

    uni.authorize查看是否已授权api只能在微信、百度、字节、飞书、快手、QQ小程序中使用。

    且需要在微信平台开通,并在配置文件里设置

    1. "usingComponents": true,
    2. "permission": {
    3. "scope.userLocation": {
    4. "desc": "你的位置信息将用于和门店的距离长度"
    5. }
    6. },
    7. "requiredPrivateInfos": [
    8. "getLocation",
    9. "chooseLocation"
    10. ]

    2.uni.chooseLocation 调起微信小程序 获取详细地址

    先看代码

    1. getMapLocation(){
    2. uni.chooseLocation({
    3. success:(res)=> {
    4. console.log(res);
    5. // this.getRegionFn(res);
    6. },
    7. fail:()=>{
    8. // 如果用uni.chooseLocation没有获取到地理位置,则需要获取当前的授权信息,判断是否有地理授权信息
    9. uni.getSetting({
    10. success: (res) => {
    11. console.log(res);
    12. var status = res.authSetting;
    13. if(!status['scope.userLocation']){
    14. // 如果授权信息中没有地理位置的授权,则需要弹窗提示用户需要授权地理信息
    15. uni.showModal({
    16. title:"是否授权当前位置",
    17. content:"需要获取您的地理位置,请确认授权,否则地图功能将无法使用",
    18. success:(tip)=>{
    19. if(tip.confirm){
    20. // 如果用户同意授权地理信息,则打开授权设置页面,判断用户的操作
    21. uni.openSetting({
    22. success:(data)=>{
    23. // 如果用户授权了地理信息在,则提示授权成功
    24. if(data.authSetting['scope.userLocation']===true){
    25. uni.showToast({
    26. title:"授权成功",
    27. icon:"success",
    28. duration:1000
    29. })
    30. // 授权成功后,然后再次chooseLocation获取信息
    31. uni.chooseLocation({
    32. success: (res) => {
    33. console.log("详细地址",res);
    34. // this.getRegionFn(res);
    35. }
    36. })
    37. }else{
    38. uni.showToast({
    39. title:"授权失败",
    40. icon:"none",
    41. duration:1000
    42. })
    43. }
    44. }
    45. })
    46. }
    47. }
    48. })
    49. }
    50. },
    51. fail: (res) => {
    52. uni.showToast({
    53. title:"调用授权窗口失败",
    54. icon:"none",
    55. duration:1000
    56. })
    57. }
    58. })
    59. }
    60. });
    61. },

    授权成功后,就可以进入到uniapp自带的选择地点的页面了,可以直接选取/拖动地图选取/搜索地点选取等多种方式实现地点的选择,页面真的是很好看啊。完全长在了我的审美点上。哈哈。

    唯一的缺点就是,这个默认使用的腾讯地图,但是腾讯地图检索不是很精确,不如高德。

    注意:使用uni.chooseLocation时,地图加载但附近地址列表不加载问题

     

     与应用的sha1一致

    3.uni.openLocation 调起微信小程序 打开详细地址

    先上代码

    1. //查看内置地图 (导航) 注意:经纬度必须转换为number类型,不然就...哈哈哈
    2. goMap(item){
    3.   // console.log(item)
    4. uni.openLocation({
    5.   latitude: Number(item.take.mer_take_location[0]),
    6.   longitude: Number(item.take.mer_take_location[1]),
    7.   name: item.take.mer_take_address,
    8.   success() {
    9.   console.log('success');
    10.   }
    11. });
    12. }

    使用后效果如下

    本文部分转载于:

    https://blog.csdn.net/lovewangyage/article/details/127660148

    如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

     

  • 相关阅读:
    Java应用层数据链路追踪(附优雅打印日志姿势)
    如何成为一个全栈数字化设计师
    Golang之双向认证
    vulnhub之pyexp
    【Java】开发工具IntelliJ IDEA
    Linux:多线程概念 | Windows的线程 | 线程的优缺点 | 进程与线程 | 线程控制 | 线程创建 | 线程终止 | 线程等待 | 分离线程
    苹果文件传到mac电脑用什么软件?
    Day36PHPcookie和session
    使用网络摄像头进行眼睛注视估计
    react 基础知识(一)
  • 原文地址:https://blog.csdn.net/qq_40716795/article/details/127778350