腾讯地图坐标至地址的转换(逆地址解析,经纬度转换成具体的地点)

参考文档:https://lbs.qq.com/webDemoCenter/glAPI/glServiceLib/geocoderGetAddress

坐标至地址转换

场景描述

在地图上,标注点后,我们可能期望得到的不仅仅是具体的经纬度,该点的具体名称也是用户所期望看到的。
所以就需要把点标记得到的经纬度转换成地址。

使用方法

参考官方文档,把例子原封不动拿到自己项目里使用,你会发现控制台:
在这里插入图片描述

Cannot read properties of undefined (reading ‘Geocoder’)

在度娘上找不到解决方法,那我们就自己再好好的读一下文档,查一下Geocoder。
给出的解释是:
Geocoder方法可以提供逆地址解析,然后就给出了使用的例子,显然这对我们的报错解决没有任何帮助。
注意看,我们是怎么使用这个解析方法的:
var geocoder = new TMap.service.Geocoder(); // 新建一个正逆地址解析类
ok,方法没有用,那我们看看它的提供者service
service是服务类附加库。
相关的使用步骤和使用限制请参考:
https://lbs.qq.com/webApi/javascriptGL/glGuide/service
通过介绍我们就会知道,报上面错误的原因就是我们没有把这个服务类附加库引入我们的项目。
根据使用步骤,在index.html引入的腾讯地图的API内,key后面加上&libraries=service。
单单做完该步骤,Geocoder的问题是解决了,但是会有一个新的报错信息:
在这里插入图片描述

个人key控制台开启服务:WebserviceAPI的域名白名单

根据报错提示,我们登入控制台,编辑key的启用产品,勾选WebserviceAPI的域名白名单
不然会报:

{
    "status": 199,
    "message": "此key未开启WebserviceAPI功能,您可登录lbs.qq.com,进入控制台key管理界面,找到此key并设置启用WebserviceAPI",
    "id": "cbl9m4qih80"
}

在这里插入图片描述

具体实例

this.geocoder = new TMap.service.Geocoder();
let location = new TMap.LatLng(this.form.repairLocationLatitude,this.form.repairLocationLongitude);
this.geocoder.getAddress({ location: location }).then((result) => {
          //result.result.address即为解析出来的地址
});

题外实例

像是有的使用场景是需要精确到房间的,可能我们就需要两个操作,先在地图上标注一个点,然后自己输入一个楼层房间号,例如:
在这里插入图片描述
那我们最后期望得到的是成山路4#401,所以就涉及解析后的地址拼接。
由于用户可能会在点标记图层上操作多次,还是建议在上传具体地址的时候再拼接:
this.form.repairLocation = result.result.address + '-' + this.form.repairLocation;
同样涉及一个问题:
如果是修改的,那得到的地址就是之前组合过的,我们修改点标记肯定希望再传递的地址是新的点加上x#xxx,所以要把地址切割后再重新组合。
为了方便,拼接的时候使用了分割符,那最终的使用是:

this.geocoder.getAddress({ location: location }).then((result) => {
          if (this.form.repairLocation.includes('-')) {
            this.form.repairLocation = result.result.address + '-' + this.form.repairLocation.split('-')[1];
          } else {
            this.form.repairLocation = result.result.address + '-' + this.form.repairLocation;
          }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值