高德地图--逆地理编码,批量转化

本文介绍了如何使用高德地图API进行逆地理编码,以满足从经纬度查询具体地址的需求。首先阐述了使用场景,然后详细说明了前期准备工作,包括获取API Key。接着,通过展示所需的jar包、测试代码和GeocodeUtil工具类,演示了批量查询地址的过程。在遇到的问题部分,讨论了地址连接的编码转换、空地址结果的处理以及坐标系类型的差异。

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

一.使用场景

​ 因公司需要,新增一个根据经纬度查询所在地址的需求

​ 例如: 113.305377,23.140492

​ 广东省广州市越秀区黄花岗街道广州动物园

二.前期准备

​ 申请高德web服务的key 值,测试够用,如果上线的话,最好用企业账号申请(申请流程高德里面有提示)

三.使用案例

1.所需jar包

		<!--导入httpclient jar包和fastjson包 -->
		<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.7</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.38</version>
        </dependency>

2.测试代码

package cn.gdmcmc.esi.gaode;


import com.alibaba.fastjson.JSON;
import com.mysql.cj.xdevapi.JsonArray;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;


/**
 * @Description:高德逆地理编码
 * @Author:lighter
 * @Date:2019/11/20 16:43
 * @Version 1.0
 */
public class GeoCodeTest {
   
   
    public static void main(String[] args) throws Exception {
   
   
        //创建一个httpclient对象
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        //创建url 
        //output = json 返回结果数据将会以JSON结构构成
       // batch 参数设置为 true 时进行批量查询操作,设置为 false 时进行单点查询,最多查询20个
        String urlStr = "https://restapi.amap.com/v3/geocode/regeo?					 output=json&batch=true&key=053633e246650ab25ae2f58c504e964b&";
        //坐标点,多个坐标点之间用 | 连接
        //java 中使用String 连接url ,识别 | 错误,要更换成 %7C
        String location = "location=113.313596,23.080083";
        String url =urlStr+location;
 		//生成get 请求对象
        HttpGet httpGet = new HttpGet(newUrl);
        //发送请求
        CloseableHttpResponse response = httpClient.execute(httpGet);
		//获取响应实体对象
        HttpEntity entity = response.getEntity();
        //转换成utf-8 编码的字符串
        String entityStr = EntityUtils.toString(entity, "utf-8");
        //转换成map 的集合
        Map map = JSON.parseObject(entityStr
### 高德地图经纬度 API 的使用方法 高德地图提供了丰富的接口来帮助开发者获取地理位置的经纬度以及实现地图可视化功能。以下是关于如何使用高德地图 API 来获取经纬度及相关操作的具体说明。 #### 1. 获取经纬度的基础流程 为了通过地址获取对应的经纬度,可以利用高德地图提供的地理编码服务。该服务允许用户输入具体的地址字符串并返回其对应的经度和纬度坐标[^3]。 请求 URL 示例如下: ```plaintext https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=json&key=<用户的Key> ``` 其中 `address` 参数表示要查询的地址,而 `key` 是申请到的应用程序访问密钥。响应数据将以 JSON 格式返回,其中包括详细的地理位置信息。 #### 2. 地图交互中的经纬度捕获 如果需要实现在网页上动态捕捉用户点击的地图位置所对应的经纬度,则可以通过 JavaScript 脚本结合高德地图前端 SDK 完成此功能[^2]。 下面是一个简单的例子展示如何设置地图中心点并将鼠标单击事件绑定至回调函数以打印当前坐标的代码片段: ```javascript // 初始化地图对象 var map = new AMap.Map('container', { zoom: 10, center: [116.397428, 39.90923] }); map.on('click', function(e){ console.log("您点击的位置是:" + e.lnglat.getLng() + "," + e.lnglat.getLat()); }); ``` 上述脚本初始化了一个位于北京地区的地图实例,并监听了鼠标的点击动作以便于记录下每一次触发时的确切地理坐标值。 #### 3. 批量处理多个地址转换为经纬度 当面临大量地址需一次性转化为它们各自的经纬度时,除了逐条调用外还可以考虑采用批量 geocoding 接口完成更高效的任务执行方式[^1]。 注意每次最多支持一定数量内的地址提交(具体限制参阅官方文档),超过部分则需要分批次发送请求直至全部完成为止。 --- ### 注意事项 - **API 密钥管理**: 开发者必须先注册账号并通过审核获得专属 Key 后才能正常使用各项服务。 - **频率控制**: 不同版本的服务可能有不同的免费额度与速率上限,请合理规划应用逻辑避免超出配额造成不必要的费用支出或者被临时封禁访问权限等问题发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值