Java对接高德api搜索POI 2.0 关键字搜索

目录

一、注册账号 

二、搜索小demo

1.首先要引入依赖

2. 然后查看打印结果即可

三、搜索接口代码

1.引入依赖

2.yml配置

2.Controller

3.静态工具类

四、运行测试


一、注册账号 

高德开放平台 | 高德地图API

  1. 注册高德开发者;
  2. 去控制台创建应用;
  3. 获取Key;

具体教程可以看官方文档 创建应用和 Key-Web服务 API | 高德地图API,api文档也在链接里

二、搜索小demo

我这里用到的是关键字搜索,先写个小demo测试一下

1.首先要引入依赖

引入这个依赖主要是因为我们是通过HttpClient类来发送HTTP请求并获取响应的

<dependencies><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>
</dependencies>

2. 然后查看打印结果即可

package cn.homed.aio.device.web;import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;public class gaode {public static void main(String[] args) throws UnsupportedEncodingException {HttpClient client = HttpClients.createDefault();String apiUrl = "https://restapi.amap.com/v5/place/text";String apiKey = "这里填你申请的key";String searchTest = "天安门广场";HttpGet request = new HttpGet(apiUrl + "?key=" + apiKey + "&keywords=" + URLEncoder.encode(searchTest,"UTF-8"));try {HttpResponse response = client.execute(request);String responseBody = EntityUtils.toString(response.getEntity());System.out.println(responseBody);} catch (IOException e) {e.printStackTrace();}}
}

三、搜索接口代码

1.引入依赖

使用Fastjson的JSONObject类来解析HTTP响应的JSON格式数据。这样做的好处是可以方便地将HTTP响应中的JSON数据转换为Java对象

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version>
</dependency>

2.yml配置

2.Controller

这里的入参keywords是关键字,region是搜索区划

package cn.homed.common.webchat;import cn.homed.common.constant.CommonKey;
import cn.homed.common.entity.MsgBean;
import cn.homed.common.utils.StringUtil;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author hulongtao*/
@Slf4j
@RestController
@Tag(name ="高德搜索", description = "高德搜索接口")
@RequestMapping("/api/amap/getAddressList")
public class AutonaviSearchController {@Value("${AMAP.apiKey}")private String apiKey;@Value("${AMAP.apiUrl}")private String apiUrl;@Operation(summary = "地址搜索", description = "通用搜索")@PostMapping(value = "")public MsgBean getAddressList(@RequestParam(value = "keywords") String keywords , @RequestParam(value = "region",required = false) String region) {if (StringUtil.isNotNullOrEmpty(keywords)) {try {JSONObject addressListByKeywords = AMAPSearchUtils.getAddressListByKeywords(keywords, region,apiKey,apiUrl);if (CommonKey.CONSTANT_1.equals(addressListByKeywords.getString("status"))) {return MsgBean.success(addressListByKeywords.getJSONArray("pois"),"搜索成功");}return MsgBean.failMsg("搜索异常");}catch (Exception e){log.error("搜索地址失败:{}",e.getMessage());return MsgBean.fail(CommonKey.FAIL);}}return MsgBean.success();}
}

3.静态工具类

这里的city_limit返回限制

package cn.homed.common.webchat;import cn.homed.common.constant.CommonKey;
import cn.homed.common.entity.MsgBean;
import cn.homed.common.utils.StringUtil;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author hulongtao*/
@Slf4j
@RestController
@Tag(name ="高德搜索", description = "高德搜索接口")
@RequestMapping("/api/amap/getAddressList")
public class AutonaviSearchController {@Value("${AMAP.apiKey}")private String apiKey;@Value("${AMAP.apiUrl}")private String apiUrl;@Operation(summary = "地址搜索", description = "通用搜索")@PostMapping(value = "")public MsgBean getAddressList(@RequestParam(value = "keywords") String keywords , @RequestParam(value = "region",required = false) String region) {if (StringUtil.isNotNullOrEmpty(keywords)) {try {JSONObject addressListByKeywords = AMAPSearchUtils.getAddressListByKeywords(keywords, region,apiKey,apiUrl);if (CommonKey.CONSTANT_1.equals(addressListByKeywords.getString("status"))) {return MsgBean.success(addressListByKeywords.getJSONArray("pois"),"搜索成功");}return MsgBean.failMsg("搜索异常");}catch (Exception e){log.error("搜索地址失败:{}",e.getMessage());return MsgBean.fail(CommonKey.FAIL);}}return MsgBean.success();}
}

四、运行测试

可以看到,数据也是正常的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arco design 发布到生成环境F5刷新报错404

问题&#xff1a;开发环境没问题&#xff0c;生成环境正常跳转也没问题但是F5刷新报错 解决办法一&#xff1a;修改 history: createWebHistory(), 改为history: createWebHashHistory(),

在Ubuntu linux操作系统上操作MySQL数据库常用的命令

检查是否安装了MySQL&#xff0c;或检查MySQL的状态&#xff1a; sudo systemctl status mysql或 sudo systemctl status mysql.service如果mysql有安装&#xff0c;上面这条命令会返回mysql的状态active或inactive。 卸载mysql数据库 第一步是停了数据库&#xff1a; sud…

MyBatis 插件介绍及应用

MyBatis 插件介绍及应用 MyBatis 是一个持久层框架&#xff0c;它允许开发者自定义 SQL 语句并将其映射到 Java 对象中。MyBatis 提供了一种灵活的数据库操作方式&#xff0c;但随着项目的复杂度增加&#xff0c;一些通用功能如分页、缓存、事务管理等可能需要重复编写。为了解…

目标检测(二阶段)领域,常见词汇

1、Backbone&#xff08;主干网络&#xff09; 定义: Backbone是目标检测模型的基础部分&#xff0c;通常是一个预训练的卷积神经网络&#xff08;如ResNet、VGG、MobileNet等&#xff09;&#xff0c;负责从输入图像中提取多层特征图。这些特征图包含了不同尺度和抽象级别的信…

MATLAB R2024a主要更新内容及发布亮点

MATLAB作为一款广泛应用于工程和科学计算领域的软件&#xff0c;也在不断进行更新和迭代。MathWorks公司发布了MATLAB R2024a版本&#xff0c;该版本在多个方面进行了重要更新&#xff0c;并带来了一系列亮点。本文将详细介绍MATLAB R2024a的主要更新内容以及发布亮点。 一、主…

flutter、kotlin、java中将方法作为入参的区别

1、带参数带返回值的方法作为入参 &#xff08;1&#xff09;flutter 定义 int add(int a, int b) > a b; int subtract(a, b) > a - b;performOperation(int a, int b, int Function(int, int) function) > function(a, b);// //简化写法 // add(a, b) > a b…

MyBatis(注解方式操作)

文章目录 1.注解方式操作文件目录1.快速入门&#xff08;完整步骤&#xff09;1.pom.xml&#xff08;完整&#xff09;2.resources/jdbc.properties外部配置文件&#xff08;根据实际情况修改参数&#xff09;3.在resources/mybatis-config.xml&#xff08;完整&#xff09;中配…

Android Studio的笔记--布局文件

关于Layout布局文件的使用 LinearLayoutRelativeLayout之前文章的内容一些常见性质在android.graphics.Color中定义了12种常见的颜色常数线性布局LinearLayout 一些常见使用文本框TextView设置文本内容编辑框EditText获取文本内容按钮Button控件使用其他按钮修改图标及名称添加…

web server apache tomcat11-28-Windows Service

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

2024.4.29力扣刷题记录-数组篇记录4

目录 一、697. 数组的度 二、448. 找到所有数组中消失的数字 三、442. 数组中重复的数据 四、 41. 缺失的第一个正数 五、485. 最大连续 1 的个数 一、697. 数组的度 哈希表 class Solution:def findShortestSubArray(self, nums: List[int]) -> int:# 哈希表# 找出最…

智慧旅游驱动行业革新:智能技术引领服务全面升级,匠心打造高品质、个性化旅游新体验

一、引言 随着科技的飞速发展和信息化程度的不断提高&#xff0c;智慧旅游正逐渐成为旅游业发展的新趋势。智慧旅游&#xff0c;顾名思义&#xff0c;是以智能化技术为支撑&#xff0c;通过大数据、云计算、物联网、人工智能等先进技术的应用&#xff0c;实现旅游服务的全面升…

探索PyTorch:开源深度学习框架的魅力

PyTorch作为一款开源深度学习框架&#xff0c;已经在学术界和工业界广泛应用。其简洁易懂的API、动态计算图以及丰富的工具和接口&#xff0c;使得它成为了许多研究人员和工程师的首选。本文将深入探讨PyTorch与深度学习的紧密联系&#xff0c;从其核心特点、应用领域以及未来发…

React Router 路由配置数组配组持久化

在一些特定场景下,你可能需要将路由配置数组进行持久化,例如从后端动态加载路由配置或根据用户权限动态生成路由配置。这时,持久化路由配置数组就很有用,可以避免每次应用启动时重新获取或计算路由配置。 持久化路由配置数组的步骤如下: 定义路由配置数组 首先,你需要定义一…

github fork项目不带tag解决

github中fork别人的项目&#xff0c;clone下来后发现只有代码&#xff0c;没有tag&#xff0c;而我们现在想基于某个tag生成新分支&#xff0c;然后基于这个分支来开发。 第一步&#xff0c;需要把原来的tag都同步过来 # Fork源仓库 # Repo: aaa/project # Fork: bbb/project…

ASR语音转录Prompt优化

ASR语音转录Prompt优化 一、前言 在ASR转录的时候&#xff0c;我们能很明显的感受到有时候语音识别不是很准确&#xff0c;这过程中常见的文本错误主要可以归纳为以下几类&#xff1a; 同音错误&#xff08;Homophone Errors&#xff09; 同音错误发生在不同词语发音相似或相…

使用Postman对@RequestPart和HttpServletRequest组合传参方式

使用Postman对RequestPart和HttpServletRequest组合传参方式 方法代码如下&#xff1a; /*** 发布*/ApiOperation("发布")ApiImplicitParams({ApiImplicitParam(name "req", value "json格式", dataType "Map", dataTypeClass Ma…

【在线名字作画HTML源码】

在线名字作画HTML源码 效果图部分源码领取源码下期更新预报 效果图 部分源码 index.htm <!DOCTYPE html> <html> <head> <title>在线名字作画|民间花鸟字|多彩花鸟虫鱼组合书法|藏字画|字谜语|飞帛板书|意匠文字</title> <meta http-equiv&…

搜维尔科技:Varjo XR-4客户体验中,在VR体验中获得高层次的视觉保真度和沉浸感。

Varjo XR-4系列是Varjo的最新一代头戴式显示器&#xff0c;其代表着世界领先的的混合现实技术和图形处理能力。新一代的XR-4更加迎合工业使用案例&#xff0c;在用户在VR体验中获得高层次的视觉保真度和沉浸感。 搜维尔科技&#xff1a;Varjo XR-4客户体验中&#xff0c;在VR…

HarmaonyOS鸿蒙应用科普课

一、什么是鸿蒙OS&#xff1f; 1.概念&#xff1a; 先给大家讲讲今天讲课的主题&#xff0c;鸿蒙OS是什么&#xff1f;鸿蒙系统大家都知道&#xff0c;就是一个操作系统&#xff0c;我们未来是为的成为鸿蒙程序员。所以我们不要将鸿蒙os完全等同于手机操作系统&#xff0c;太…

华为 huawei 交换机 配置 MUX VLAN 示例(汇聚层设备)

组网需求 在企业网络中&#xff0c;企业所有员工都可以访问企业的服务器。但对于企业来说&#xff0c;希望企业内部部分员工之间可以互相交流&#xff0c;而部分员工之间是隔离的&#xff0c;不能够互相访问。 如 图 6-4 所示&#xff0c; Switch1 位于网络的汇聚层&#xff0…