高德地图API-地理/逆地理编码开发

本文介绍了如何使用高德地图API进行地址经纬度转换,包括地理编码将地址转为坐标,以及逆地理编码将坐标转换成详细地址,并展示了Postman测试和代码实例。需注册开发者账号并理解接口参数调整问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.应用场景

● 地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.480881,39.989410
地标性建筑举例:天安门转换后经纬度:116.397499,39.908722
● 逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号

2.准备工作

1.申请高德个人开发者账号

快速地址:高德开发平台地址
第一步:登录高德开放平台,注册个人账号(该账号是免费的,可以使用支付宝登录)
在这里插入图片描述
第二步:创建一个应用,然后配置web服务API类型Key
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.测试工作

1.前言

这里使用的地理/逆地理编码,就是将结构化地址转为经纬度或者经纬度转换为结构化地址
地理/逆地理编码地址:地理/逆地理编码接口文档

在这里插入图片描述

2.地理编码接口测试

1.地理编码接口文档

在这里插入图片描述

2.postman测试

这里直接使用postman进行测试,注意:实际接口返回的参数和官方文档对不上,应该是官方接口文档没有更新

在这里插入图片描述

3.逆地理编码接口测试

逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。

1.逆地理编码接口文档

在这里插入图片描述

2.postman测试

在这里插入图片描述

4.代码演示

1.地理编码接口代码测试

代码演示:

    /***
     * 地理编码:
     * 通过结构化地址获取经纬度信息
     */
    @Test
    public void queryLocationTest() {
        String url = "https://restapi.amap.com/v3/geocode/geo?key={key}&address={address}";
        Map<String, String> map = Maps.newHashMapWithExpectedSize(2);
        map.put("key", key);
        map.put("address", "管城回族区");
        // 注意: getForObject 请求,url需要提前指定好参数的位置.
        String result;
        try {
            result = restTemplate.getForObject(url, String.class, map);
        } catch (Exception e) {
            throw new ExampleException(ExceptionEnum.OUTER_ERROR.getCode());
        }
        System.out.println(result);
    }

输出结果:

{"status":"1","info":"OK","infocode":"10000","count":"1","geocodes":[{"formatted_address":"河南省郑州市管城回族区",
"country":"中国","province":"河南省","citycode":"0371","city":"郑州市","district":"管城回族区","township":[],        
"neighborhood":{"name":[],"type":[]},"building":{"name":[],"type":[]},"adcode":"410104","street":[],"number":[],
 "location":"113.677548,34.754500","level":"区县"}]}

2.逆地理编码接口测试

代码演示:

    /**
     * 逆地理编码
     * 通过经纬度获取结构化地址
     */
    @Test
    public void queryLatitudeAndLongitude() {
        String url = "https://restapi.amap.com/v3/geocode/regeo?key={key}&location={location}";
        Map<String, String> parameters = Maps.newHashMapWithExpectedSize(2);
        parameters.put("key", key);
        parameters.put("location", "113.677548,34.754500");
        String result;
        try {
            result = restTemplate.getForObject(url, String.class, parameters);
        } catch (Exception e) {
            throw new ExampleException(ExceptionEnum.OUTER_ERROR.getCode());
        }
        System.out.println(result);
    }

输出结果:

{"status":"1","regeocode":{"addressComponent":{"city":"郑州市","province":"河南省","adcode":"410104",
 "district":"管城回族区","towncode":"410104001000","streetNumber":{"number":"217号","location":"113.677500,34.754290",
 "direction":"南","distance":"23.7611","street":"商城路"},"country":"中国","township":"北下街街道",
"businessAreas":[{"location":"113.686288,34.749987","name":"紫荆山","id":"410104"},
{"location":"113.690160,34.750173","name":"城东路","id":"410104"},
 {"location":"113.671461,34.759608","name":"杜岭","id":"410105"}],
"building":{"name":[],"type":[]},"neighborhood":{"name":[],"type":[]},"citycode":"0371"},
"formatted_address":"河南省郑州市管城回族区北下街街道郑州市管城回族区人民政府"},"info":"OK","infocode":"10000"}

5.总结

1.需要提前注册一个高德账号,支付宝账户即可,然后申请个人开发者;
2.就是一个简单的请求第三方接口,注意地理编码和逆地理编码接口的出入参和官方文档出有些出入;
3.注意该地理/逆地理不能查询国外的经纬度,如果需要国外的经纬度,推荐使用百度。

### UniApp 中使用高德地图 API 实现逆地理编码 #### 配置环境与准备工作 为了在 UniApp 应用程序中集成并使用高德地图逆地理编码功能,开发者需要先完成必要的准备步骤。这包括注册成为高德开放平台用户,并创建相应的应用程序来获得合法使用的密钥(即 Key)。此过程类似于其他第三方服务接入前的操作。 对于具体的应用场景而言,在 `manifest.json` 文件中的适当位置添加对所需权限和服务的支持声明是必不可少的一个环节[^1]。不过针对高德地图API的具体配置项,则应参照官方文档指导来进行设置。 #### 编写代码实现逆地理编码 下面是一个简单的例子展示怎样利用 JavaScript 调用高德提供的 Web Service 接口执行一次逆地理编码请求: ```javascript // 定义要查询的位置坐标(纬度,经度) const location = "39.9042,116.4074"; uni.request({ url: 'https://restapi.amap.com/v3/geocode/regeo', // 请求地址 data: { key: '您的高德地图API Key', location, extensions: 'all' }, success(res) { console.log('成功:', res.data); const result = JSON.parse(res.data).regeocode; if (result){ console.info(`当前位置位于${result.addressComponent.district}区`); } }, fail(err) { console.error('失败:', err); } }); ``` 上述代码片段展示了如何通过发送 HTTP GET 请求到指定 URL 来获取给定坐标的详细地理位置描述信息。其中包含了必填参数如 `key`(用于身份验证) 和 `location`(目标经纬度),以及可选扩展字段 `extensions` 用来控制返回数据量大小。 需要注意的是,这里仅作为概念性的演示;实际项目开发时应当遵循更严格的安全性和错误处理机制,并考虑缓存策略以减少不必要的网络开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值