微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

这篇具有很好参考价值的文章主要介绍了微信小程序中使用 wx.getLocation获取当前详细位置并计算距离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

wx.getLocation只能够获取经纬度,不能够拿到详细地址;如果你的项目刚好也使用腾讯地图的api,那么可以通过腾讯地图的逆解析就能拿到详细地址了;

1,wx.getLocation()

先介绍一下wx.getLocation()方法的使用; 此方法可以获取当前的经纬度和速度、高度;官网链接

想要使用这个方法,先需要在小程序后台 《开发管理-接口设置》中开通接口权限,需要审核通过才能使用:

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

注意:自 2022 年 7 月 14 日后发布的小程序,若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口;如下:
app.json

 "requiredPrivateInfos": ["getLocation", "chooseLocation", "chooseAddress"],

开始使用:

wx.getLocation({
    type: 'gcj02', // 比较精确
    success: (res) => {
     console.log(res);
    }
  })

那么此接口只能获取到当前的经纬度 并不是当前的省市区街道等地址;下面我们会配合使用腾讯地图的api进行地址的逆解析获取详细地址;

2,获取详细地址

第一步:在腾讯位置服务注册获取key或公司里面已经获取过key: 腾讯地图官方链接

第二步:就是在小程序的《开发管理-域名服务器》中的request合法域名中添加一行:https://apis.map.qq.com

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离
第三步:在app.json中添加:

  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  }

第四步:我是在onLoad生命周期加载的代码,你可以根据具体情况把下面代码复制到其他相应位置;

先下载jssdk文件解压后放到相应位置

// 引入SDK核心类
let QQMap = require("../../utils/qqmap-wx-jssdk.min"); 
let QQMapSdk;
Page({
    
/**
 * 页面的初始数据
 */
data: {
  currentLat:"",
  currentLon:"",
},
})
  	/**
   * 生命周期函数--监听页面加载
   */
  	onLoad(query){
   		this.getLoaction()
	}
	// 获取位置的方法
	 getLoaction() {
        // 1.先开始定位
        wx.getLocation({
          type: 'gcj02', // 比较精确
          success: (res) => {
            // 2,地址逆解析  根据经纬度获取实际地址
            QQMapSdk.reverseGeocoder({
              location: {
                latitude: res.latitude,
                longitude: res.longitude
              },
              success: (data) => {
                console.log("当前地址信息:", data);
                // 存储 详细地址 和当前获取的经纬度
                let address = data.result.address + data.result.formatted_addresses.recommend;
                this.setData({
                  currentLoaction: address,
                  currentLat: data.result.location.lat,
                  currentLon: data.result.location.lng
                })
            
              },
              fail: (error) => {
                console.error("err:", error)
              },
            })
          }
        })
      }

3,计算距离

可以使用 calculateDistance 方法计算两地经纬度之间的距离;

   // 计算两个经纬度的直线距离 https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/methodCalculatedistance
     calculateDistanceFun(){
        QQMapSdk.calculateDistance({
            mode: 'straight',//直线距离
            // 起点坐标
            from: {
              latitude: this.data.latlon.lat,
              longitude: this.data.latlon.lon
            },
            // 终点坐标 to是当前位置 注意是一个数组
            to: [{
              latitude: data.result.location.lat,
              longitude: data.result.location.lng
            }],
            success: (calc) => {
              // 计算结果输出为米
              let distance = calc.result.elements[0].distance;
              console.log("计算距离为:", distance + '米');
            },
            // 失败的情况
            fail: (error) => {
              console.error('error:', error);
            },
          })
     }

4,报错信息: getLocation:fail 频繁调用会增加电量损耗

如果出现以下报错信息说明:

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离

我们在调用wx.getLocation()方法的回调里面又直接调用了腾讯地图的reverseGeocoder方法(腾讯地图api也可能也调用了wx.getLocation()方法 导致间隔不够30秒报频繁调用)

解决方法:调用 reverseGeocoder方法时 传入经纬度即可,什么都不传就会报这个错误;

 		qqmapsdk.reverseGeocoder({
 			//传入当前的经纬度
              location: {
                latitude: res.latitude,
                longitude: res.longitude
              },
              success: (data) => {
              },
              fail: (error) => {
                console.error("err:", error)
              },
            })

5,报错信息: 请求源未被授权

出现这个报错说明 你引用的key值 没有授权你当前电脑的ip地址;

微信小程序中使用 wx.getLocation获取当前详细位置并计算距离


解决方法:

需要在腾讯地图的后台配置一下你的ip;并把允许在小程序中使用勾选上;
微信小程序中使用 wx.getLocation获取当前详细位置并计算距离
WebServiceAPI Key配置中的授权IP文章来源地址https://www.toymoban.com/news/detail-482854.html

到了这里,关于微信小程序中使用 wx.getLocation获取当前详细位置并计算距离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 微信小程序地理位置接口wx.getLocation接口申请方法技巧

    微信小程序地理位置接口wx.getLocation接口申请方法技巧

    我们在开发微信小程序的时候,提交审核微信官方就会检测咱们的小程序有没有用到位置功能,涉及用到哪个位置接口,然后就会要求我们先申请相应的位置接口,审核通过后才可以发布小程序。 这个接口审核一直是让大家头痛的事情,有的小伙伴申请几十次都不给过,有时

    2024年02月13日
    浏览(9)
  • 微信小程序wx.getLocation 真机调试不出现隐私弹窗

    微信小程序wx.getLocation 真机调试不出现隐私弹窗

            在小程序的开发过程中,首页中包含要获取用户地理位置的功能,所以在这里的onLoad()中调用了wx.getLocation(),模拟调试时一切正常,但到了真机环境中就隐私框就不再弹出,并且出现了报错,在打印之后发现getLocation的成功和失败均没有进行          (设置

    2024年04月16日
    浏览(16)
  • 【微信小程序地理位置权限】wx.getLocation申请教程+申请素材

    【微信小程序地理位置权限】wx.getLocation申请教程+申请素材

    为进一步规范开发者调用涉用户信息相关接口或功能,保障用户合法权益,平台将对如下地理位置相关接口调用实行准入开通: wx.getLocation、wx.onLocationChange、wx.chooseAddress、wx.chooseLocation、wx.choosePoi 自2022年4月18日开始,如使用以上接口,在代码审核环节将检测该接口是否已完

    2024年02月10日
    浏览(12)
  • uniapp开发指南1 -- 微信小程序申请 wx.getLocation、wx.chooseLocation API指南

    uniapp开发指南1 -- 微信小程序申请 wx.getLocation、wx.chooseLocation API指南

    最近项目中要使用微信小程序的地理位置信息采集的功能,需要使用 wx.chooseLocation 和 wx.getLocation 两个API接口。于是我全程负责从申请到开发,下面由我来简述一下申请和开发指南。 这是地址: 微信公众平台 首先我们进入的小程序后台,点击 “ 设置 ” 进入 “ 基本设置

    2024年02月03日
    浏览(11)
  • 微信小程序申请地理位置接口wx.getLocation不通过的应对方案 过率很高

    微信小程序申请地理位置接口wx.getLocation不通过的应对方案 过率很高

    1、 你好,你的小程序“xxxxxx”申请的wx.getLocation接口因你提供的申请原因/辅助图片/网页/视频内容无法确认申请接口使用场景审核不通过,建议修改后重新提交。 2、 你好,你的小程序“xxxxx”申请的wx.getLocation接口因你所描述的小程序接口使用场景,目前未符合接入wx.getL

    2024年02月15日
    浏览(14)
  • 微信小程序使用高德地图获取当前定位

    微信小程序使用高德地图获取当前定位

    1.在腾讯地图官网注册一个key(创建一个应用会自动生成一个key,详细步骤如图) 腾讯位置服务 - 立足生态,连接未来 注意点:开通webserviceAPI服务:控制台 -应用管理 - 我的应用 -添加key- 勾选WebServiceAPI - 保存 (小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需

    2024年02月06日
    浏览(47)
  • 第二期 微信云开发之位置信息获取(wx.getLocation)

    第二期 微信云开发之位置信息获取(wx.getLocation)

    很多小伙伴在开发微信小程序的时候,需要获取当前用户位置信息时,都会遇到该如何获取位置详细信息的问题,以下是我的处理方法。 首先,我在生活智打卡小程序使用的是微信小程序自带的获取用户的位置信息的接口(wx.getLocation),但是这个接口不会返回具体的地址信

    2024年02月09日
    浏览(7)
  • uniapp微信小程序getLocation获取经纬度报错

    uniapp微信小程序getLocation获取经纬度报错

    uniapp开发微信小程序时,需要做一个授权位置信息的需求,使用getLocation获取用户当前的经纬度。期间遇到了一个问题老是报这个错误:“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json” 根据官方文档 https://developers.weixin.qq.com/miniprogram/dev/api/loc

    2024年02月13日
    浏览(43)
  • 微信小程序wx.getFuzzyLocation获取经纬度的成功使用示例,以及注意事项

    微信小程序wx.getFuzzyLocation获取经纬度的成功使用示例,以及注意事项

    注意事项: 1. 微信小程序基础库必须在 2.25.0及以上 才可以用这个接口,并且微信开发者工具也要是最新的 2.这个定位接口在编译器中报错,只有在 真机中好用 (偶尔在编译器中也好用),可以使用真机调试进行开发查看效果 上代码。 第一步:先在小程序公众平台    开发

    2024年02月11日
    浏览(47)
  • 微信小程序报错wx.getLocation need to be declared in the requiredPrivateInfos field in app.json

    微信小程序报错wx.getLocation need to be declared in the requiredPrivateInfos field in app.json

    wx.getLocation need to be declared in the requiredPrivateInfos field in app.json/ext.json(env: Windows,mp,1.06.2301160; lib: 2.30.3) 自 2022 年 7 月 14 日后发布的小程序,使用以下8个地理位置相关接口时,需要声明该字段,否则将无法正常使用。 文件app.json   全局配置 | 微信开放文档 微信开发者平台文档

    2024年02月05日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包