java调用百度地图API根据地理位置获取经纬度

前言:

自己申请一个百度地图得账号,然后创建自己需要服务拿到Ak

下载地址:登录百度帐号 https://lbsyun.baidu.com/apiconsole/key

1.第一步:申请账号,这一步大家都会就不做太多介绍了

2.第二步:创建ak,

 3.第三步:创建ak,拿到ak并保存下来,别让其他人用了

 4.干货来了!!!!导入http得依赖,通过地址拿到经纬度

/**
     * @Description:  <百度开发者>在百度地图开发文档申请的key,目前是我私人的
     * @Author: xy丶
     */
    // @Value("${baidu.ak}")
    //private String ak;
    final static String AK = "edGc5mIugVxx7********o"; 这里是刚创建得自己得AK

    /**
     * @Description: 地理位置编码
     * @Author: xy丶
     */
    //@Value("${baidu.url}")
    //private String url;
    final static String ADDRESS_TO_LONGITUDEA_URL = "http://api.map.baidu.com              /geocoding/v3/?output=json&location=showLocation";

    /**
     * @Description: 地理位置编码
     * @Author: xy丶
     * @retur: 返回地理位置信息
     */
    @GetMapping("addressApi")
    public ApiResultVO AddressTolongitudea(String address) {

        if(Strings.isBlank(address)){
            log.info("请输入地址");
            return null;
        }
        String httpUrl = ADDRESS_TO_LONGITUDEA_URL + "&ak=" + AK + "&address="+ address;
        log.info("请求url:" + httpUrl);
        // 创建默认http连接
        HttpClient client = HttpClients.createDefault();
        // 创建一个post请求
        HttpPost post = new HttpPost(httpUrl);
        try {
            // 用http连接去执行get请求并且获得http响应
            HttpResponse response = client.execute(post);
            // 从response中取到响实体
            HttpEntity entity = response.getEntity();
            log.info("响应实体:"+entity);
            // 把响应实体转成文本
            String html = EntityUtils.toString(entity);
            log.info("返回信息:" + html);
            // JSON转对象
            return JSON.parseObject(html, ApiResultVO.class);
        } catch (Exception e) {
            log.error("地理编码[异常],", e);
            return null;
        }
    }

返回结果:

{

    "status": "0",

    "result": {

        "level": "村庄",

        "confidence": "50",

        "location": {

            "lng": "105.0006026218481",

            "lat": "29.645771323452065"

        },

        "precise": "0",

        "comprehension": "57"

    }

}

5.通过经纬度,拿到具体得地址

/**
     * 逆地理编码 URL
     */
    //@Value("${baidu.rurl}")
    private String rurl;
final static String LONGITUDE_TO_ADDRESS_URL = "http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=BD09&pois=1";
    /**
     * 逆地理编码
     * @param lat
     *        纬度 23.1067,
     * @param lng
     *        经度 113.325
     * @return
     */
    @GetMapping("/reverseGeography")
    public ReverseGeography longitudeToAddress(float lat, float lng) {
        //拼接请求路径
        String url = LONGITUDE_TO_ADDRESS_URL + "&ak=" + ak + "&location=" + lat + "," + lng;
        log.info("请求url:" + url);
        // 创建默认http连接
        HttpClient client = HttpClients.createDefault();
        // 创建一个post请求
        HttpPost post = new HttpPost(url);
        try {
            // 用http连接去执行get请求并且获得http响应
            HttpResponse response = client.execute(post);
            // 从response中取到响实体
            HttpEntity entity = response.getEntity();
            // 把响应实体转成文本
            String html = EntityUtils.toString(entity);
            log.info("返回信息:" + html);
            // JSON转对象
            return JSON.parseObject(html, ReverseGeography.class);
        } catch (Exception e) {
            log.error("逆地理编码[异常],", e);
            return null;
        }
    }

 返回结果

返回结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值