高德地图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.注意该地理/逆地理不能查询国外的经纬度,如果需要国外的经纬度,推荐使用百度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值