高德地图web服务api反坐标查询/逆地理编码

本文介绍了一个使用Spring Boot集成高德地图API的示例项目。该项目通过Maven进行依赖管理,并利用OkHttp发起HTTP请求获取地理位置信息。代码展示了如何从数据库中读取经纬度坐标,并调用高德地图逆地理编码API获取地址。

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

官方API:https://lbs.amap.com/api/webservice/gettingstarted

1、pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.api</groupId>
	<artifactId>gaodeapi</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>gaodeapi</name>
	<description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.1.2</version>
        </dependency>

        <!-- alibaba的druid数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

        <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.10.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.squareup.okio/okio -->
        <dependency>
            <groupId>com.squareup.okio</groupId>
            <artifactId>okio</artifactId>
            <version>1.13.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>


    </dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2、代码

package com.tyxx.action;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.tyxx.GaodeapiApplication;
import com.tyxx.model.GdGPS;
import com.tyxx.service.GdGPSService;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;
import java.util.List;

/**
 * Created by cqy on 2019/3/18.
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {GaodeapiApplication.class})// 指定启动类
public class Test {

    @Autowired
    private GdGPSService gdGPSService;		//数据查询和更新

    @org.junit.Test
    public void testSelect() {
        List<GdGPS> lt = gdGPSService.selAll();
        for (int i = 0; i < lt.size(); i++) {
            GdGPS gdGPS = lt.get(i);
            System.out.println("id:" + gdGPS.getId());
            String str = Test.gdapi(gdGPS.getJingdu(), gdGPS.getWeidu());
            System.out.println("位置:" + str);
            gdGPS.setAddress(str);
            Integer row = gdGPSService.updatePri(gdGPS);
            System.out.println(row + "-------------");
        }
    }

    public static String gdapi(String jingdu, String weidu) {
        String url = "https://restapi.amap.com/v3/geocode/regeo?output=json&location=" +
                jingdu + "," + weidu + "&key=换成自己申请的key&radius=1000&extensions=all";
        OkHttpClient okHttpClient = new OkHttpClient();

        Request request = new Request.Builder().url(url).get().build();

        Call call = okHttpClient.newCall(request);
        String results = "";
        try {
            Response response = call.execute();
            String result = response.body().string();
            // System.out.println(result);
            JSONObject json = JSONArray.parseObject(result);
            // System.out.println(json);
            // System.out.println(json.get("regeocode"));
            JSONObject obj = JSONObject.parseObject(json.get("regeocode")
                    .toString());
            System.out.println(obj.get("formatted_address"));
            results = obj.get("formatted_address").toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return results;
    }

}
### 高德地图地理编码与逆地理编码API使用教程 #### 一、概述 高德地图提供了强大的地理编码和逆地理编码功能,能够将结构化的地址转化为经纬度坐标或将经纬度坐标转换成详细的地理位置描述。这些功能通过Web服务API提供给开发者,方便集成到各种应用中。 #### 二、准备工作 为了使用高德地图的地理编码和逆地理编码API,需要先完成一些必要的准备步骤[^1]: - 注册成为高德开放平台用户并创建自己的应用程序以获得API Key。 #### 三、地理编码请求参数说明 对于地理编码操作来说,主要涉及以下几个重要参数[^3]: - `address`:待查询的具体位置名称或门牌号等信息; - `city`(可选):指定要查找的城市,默认为空表示全国范围搜索; 示例代码展示如何构建一个简单的HTTP GET请求来执行地理编码任务: ```python import requests def geocode(address, city=""): url = "https://restapi.amap.com/v3/geocode/geo" params = { 'key': '您的API密钥', 'address': address, 'city': city } resp = requests.get(url=url, params=params).json() if resp['status'] != '1': raise Exception(f"Error occurred while fetching data from AMap API: {resp}") return resp["geocodes"][0]["location"] ``` #### 四、逆地理编码详解 逆地理编码则是指由具体的经纬度坐标得到对应的详细地址信息的过程。其核心在于设置好相应的URL路径以及传递合适的查询字符串作为输入条件[^2]。 具体而言,在发起一次有效的逆地理编码请求时,至少应当包含以下几项配置选项[^4]: - `location`: 经纬度坐标对组成的字符串形式,中间用逗号分隔开; - `output`: 输出格式设定为JSON以便于后续解析处理; 下面给出了一段Python脚本片段用于演示怎样利用requests库轻松调用此接口获取目标地点所在城市的名称: ```python def regeo(location): """获取逆地理编码""" url ='https://restapi.amap.com/v3/geocode/regeo' param ={ 'key':'你的key', 'location': location, 'output':'json' } response = requests.get(url,params=param) data = response.json() try: city_name = data['regeocode']['addressComponent']['city'] except KeyError as e: print("未能成功提取城市名:", str(e)) city_name = None return city_name ``` 值得注意的是,在实际开发过程中可能会遇到某些特殊情况下的异常情况处理问题,比如当某个特定区域内不存在有效命名的空间实体对象时,则可能不会返回预期的结果集而是空列表或其他默认值。因此建议在编写业务逻辑代码之前仔细阅读官方文档中的注意事项部分,并做好充分测试验证工作确保程序健壮性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值