第一步、去申请高德的key
第二步、引入下面的工具类
第三步、创建协议了,映射想要拿到的数据
package com.fangzhou.common.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
/**
* @Classname GaoDeUtils
* @Description TODO
* @Version 1.0.0
* @Date 2023/3/31 11:56
* @Created by luozhao
*/
public class GaoDeUtils {
/**
*根据经纬度获取省市区
*/
public static String getAddressByJWD(String clog, String clat){
//lat 小 log 大
//参数解释: 纬度,经度 采用高德API可参考高德文档https://lbs.amap.com/
//注意key是在高德开放平台申请的key,具体获得key的步骤请查看网址:https://developer.amap.com/api/webservice/guide/create-project/get-key
String key = "";
String parameters="?key="+key;
parameters+="&location="+clog+","+clat;//经纬度坐标
parameters+="&extensions=all";//返回结果控制,extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。
// parameters+="&batch=false";//批量查询控制,batch 参数设置为 false 时进行单点查询,此时即使传入多个经纬度也只返回第一个经纬度的地址解析查询结果。
// parameters+="&roadlevel=0";//道路等级,当 roadlevel = 0 时,显示所有道路
parameters+="&output=JSON";
parameters+="&radius=100";//搜索半径,radius取值范围在0~3000,默认是1000。单位:米
String urlString = "https://restapi.amap.com/v3/geocode/regeo"+parameters;
StringBuilder res = new StringBuilder();
try {
// log.info("高德地图请求地址:"+urlString);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
String line;
while ((line = in.readLine()) != null) {
res.append(line);
}
in.close();
// log.info("高德返回结果:" + res);
} catch (Exception e) {
// log.info("获取地址信息异常");
e.printStackTrace();
return null;
}
return res.toString();
}
}
根据JSON对象获取信息
String cityInfo = GaoDeUtils.getAddressByJWD(request.getClog(), request.getClat());
JSONObject resultSucces = JSONObject.parse(cityInfo);
JSONObject addr=resultSucces.getJSONObject(“regeocode”);
AddressComponent addressComponent = JSON.parseObject(JSON.toJSONString(addr.get(“addressComponent”)), AddressComponent.class);
创建协议类:如果想获取更多数据,自己根据相应的key 去拿值
package com.fangzhou.service.domain.address;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
-
@Classname AddressVo
-
@Description TODO
-
@Version 1.0.0
-
@Date 2023/3/31 15:25
-
@Created by luozhao
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Tag(name=“AddressComponent”, description=“根据经纬度获取信息”)
public class AddressComponent {@Schema(title = “国籍”)
private String country;@Schema(title = “省份”)
private String province;@Schema(title = “市”)
private String city;@Schema(title = “区”)
private String district;@Schema(title = “街道”)
private String township;文章来源:https://www.toymoban.com/news/detail-473972.html
}文章来源地址https://www.toymoban.com/news/detail-473972.html
到了这里,关于高德根据经纬度,查询所在位置信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!