当前位置: 首页 > article >正文

高德根据经纬度,查询所在位置信息

第一步、去申请高德的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;

}


http://www.kler.cn/a/5949.html

相关文章:

  • ADO.NET知识总结4---SqlParameter参数
  • Docker 容器自动化管理之脚本(Script for Docker Container Automation Management)
  • 【AI-21】深度学习框架中的神经网络
  • 鸿蒙开发(29)弹性布局 (Flex)
  • Unity Burst详解
  • CANN 学习——基于香橙派 KunpengPro(1)
  • 数字藏品系统功能介绍
  • rasa命令行介绍
  • (2023Q2模拟题JAVA)华为OD机试 - 最多提取子串数目
  • 类模板案例:实现一个通用的数组类
  • SuperMap GIS基础产品组件GIS FAQ集锦(1)
  • 《数学建模实战攻略:常用数学理论与方法Matlab》
  • 小驰私房菜_04_Camera2 - Image中YUV格式理解
  • 【jmeter+Ant+Jenkins】开展接口自动化测试集成
  • 数据结构——哈希表
  • android 源码framework中加入自定义服务
  • 【全网独家】华为OD机试Golang解题 - 机智的外卖员
  • 我能“C”——详解操作符(下)
  • FFmpeg 入门学习 07--创建音视频解码管理类
  • 图片怎么转PDF文件?三种免费转换方法集合!
  • 3、AI的道德性测试
  • linux宝塔面板安装composer的方法[全网详解]
  • @Transactional和synchronized同时使用时的一些问题以及解决
  • YOLO算法改进指南【算法解读篇】:2.如何训练自己的数据集
  • 13、操作系统——posix信号量(无名信号量)
  • python开启局域网传输