Java 集成高德开放平台 POI 搜索 API 实战
在涉及地理位置服务的应用中,Java 凭借其稳定性和生态优势,常作为后端首选。高德开放平台提供了成熟的 WebAPI,其中 POI(兴趣点)搜索是高频场景。本文将结合 Uniapi 框架,演示如何在 Java 项目中高效接入高德搜索服务,从接口定义到业务调用,并探讨生产环境的注意点。
高德搜索 API 概览
高德搜索支持关键字、周边、多边形等多种检索方式。核心接口为 /v5/place/text,采用 GET 请求。开发者可根据需求灵活组合参数,获取结构化地址或 POI 名称信息。
关键请求参数
| 参数名 | 含义 | 是否必须 |
|---|---|---|
| key | 高德 Key | 必填 |
| keywords | 地点关键字 | 必填(keyword 或 types 二选一) |
| types | 指定地点类型 | 可选 |
| region | 搜索区划 | 可选 |
| page_size | 分页展示条数 | 可选 |
| show_fields | 返回结果控制 | 可选 |
响应数据包含 status、info、count 及 pois 列表。每个 poi 对象包含经纬度、地址、类型码等基础信息,商业信息、室内导航等需额外配置 show_fields 参数。
使用 Uniapi 封装接口
为了简化 HTTP 调用,我们可以利用 Uniapi 的注解能力定义远程服务。这种方式比原生 HttpClient 更直观,且便于统一管理。
package com.yelang.project.thirdinterface;
import com.burukeyou.uniapi.http.annotation.HttpApi;
import com.burukeyou.uniapi.http.annotation.param.QueryPar;
import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
@HttpApi(url = "https://restapi.amap.com/v5")
public interface AmapSearchService {
@GetHttpInterface("/place/text")
HttpResponse<String> getSearch(
@QueryPar("keywords") String keywords,
@QueryPar("types") String types,
@QueryPar("region") String region,
@QueryPar("page_size") String pageSize,
@QueryPar("page_num") String pageNum,
@QueryPar("show_fields") String showFields,
String key
);
}


