小程序:定位具体位置和显示相应城市名称

问题:
uniapp 内置方法uni.getLocation在小程序中 只能获取到经纬度, 不能获取到具体的城市名称
uni.getLocation: https://uniapp.dcloud.io/api/location/location

uni.getLocation({
    type: 'wgs84',
    success: function (res) {
        console.log('当前位置的经度:' + res.longitude);
        console.log('当前位置的纬度:' + res.latitude);
    }
});

在这里插入图片描述

所以需要用经纬度获取相对应的城市名称(百度地图, 高德地图)
高德地图 : https://ask.dcloud.net.cn/article/35070

以下用的是百度地图的方法:

  1. 注册百度地图账号,获取ak
    打开百度地图开放平台,导航栏处选择 “开发文档” > “微信小程序JavaScript API”,在“入门指南”处有详细介绍怎么生成密钥ak
    具体操作请访问地址: http://lbsyun.baidu.com/index.php?title=wxjsapi/guide/key
    在这里插入图片描述
    查看ak: http://lbsyun.baidu.com/apiconsole/key#/home
    在这里插入图片描述

  2. 使用小程序的账号登录微信公众平台(https://mp.weixin.qq.com/),在“开发” 中选择 “开发管理”,把百度地图api的url添加到request合法域名中
    在这里插入图片描述
    代码:

// 根据经纬度获取地名
location(latitude,longitude){
	uni.request({
		url: 'http://api.map.baidu.com/reverse_geocoding/v3/?ak=1rbWRy3RmGLeBB3KBj42FivR64PFejd3&location=' + latitude + ',' + longitude + '&output=json',
		data: {},
		header: {
			'Content-Type': 'application.json'
		},
		success: res => {
			console.log(res.data)
			if(res && res.data){
				let city = res.data.result.addressComponent.city
				this.city = city.substr(0,city.length - 1)
			}
		}
	})
}

打印结果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值