uniapp利用腾讯地图接口获取当前定位城市及计算两经纬度的实际距离

在这里插入图片描述

一、注册腾讯地图
1. 申请开发者密钥(key)

申请密钥

2. 开通webserviceAPI服务


控制台 -> key管理 -> 设置(使用该功能的key)-> 勾选webserviceAPI-> 保存
(小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需要具备相应的权限)
在这里插入图片描述

3. 下载SDK

微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.2

二、导入SDK
2.1. 解压复制

下载后解压,将里面的 qqmap-wx-jssdk.js 文件拷贝到项目里面。
在这里插入图片描述

2.2. 页面导入

然后在需要的页面导入。

import qqmapsdk from '../../static/qqmap-wx-jssdk.min.js';

在这里插入图片描述

三、实现
3.1. 先创建实例。
const QQMapWX = new qqmapsdk({
	key: '在腾讯位置服务申请的key'
});
3.2. 获取经纬度

然后先调用 uni.getLocation 获取经纬度,然后再调用该js的方法去解析地址。

uni.getLocation({
	type: 'wgs84',
	geocode: true,
	success: (res) => {
		console.log("获取经纬度成功");
		this.latitude = res.latitude;
		this.longitude = res.longitude;
	},
	fail: () => {
		console.log("获取经纬度失败");
	},
	complete: () => {
		// 解析地址
		QQMapWX.reverseGeocoder({
			location: {
				latitude: this.latitude,
				longitude: this.longitude
			},
			success: function(res) {
				console.log("解析地址成功");
				console.log(res);
				// 省
				let province = res.result.ad_info.province;
				// 市
				let city = res.result.ad_info.city;
				console.log(province);
				console.log(city);
			},
			fail: function(res) {
				uni.showToast({
					title: '定位失败',
					duration: 2000,
					icon: "none"
				})
				console.log(res);
			},
			complete: function(res) {
				console.log(res);
			}
		})
	}
})
3.3. 监控

控制台输出如下:
在这里插入图片描述

如果在手机上定位失败,就在 manifest.json 里的指定地方加上两行代码:

    "app-plus" : {
    	/* 模块配置 */
    	"distribute" : {
    		/* 应用发布信息 */
            "android" : {
            	/* android打包配置 */
                "permissions" : [
                	"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>"
                ]
            }
        }
    }

获取一下手机的定位权限。

欢迎指导!!!

四、计算二点距离

uni-app获取腾讯地图计算两经纬度的实际距离(可批量)

4.1. 官网地址

https://lbs.qq.com/service/webService/webServiceGuide/webServiceDistance
在这里插入图片描述

4.2. 代码
getDistance() {
  uni.request({
    url: 'https://apis.map.qq.com/ws/distance/v1/matrix', //仅为示例,并非真实接口地址。
    method: 'GET',
    data: {
      mode: 'walking',
      from: '39.071510,117.190091',
      to: '39.108951,117.279396',
      key: '.....' //获取key
    },
    success: (res) => {
      console.log(res);
      let hw = res.data.result.rows[0].elements[0].distance; //拿到距离()
      if (hw && hw !== -1) {
        if (hw < 1000) {
          hw = hw + 'm';
        }
        //转换成公里
        else {
          hw = (hw / 2 / 500).toFixed(2) + 'km'
        }
      } else {
        hw = "距离太近或请刷新重试"
      }
      console.log(hw);
    }
  });
}
4.3. 测试

在这里插入图片描述

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gblfy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值