Java 根据百度经纬度(坐标) 获取中国街道、街道编码

做同步第三方数据项目的时候,其中就有百度经纬度、街道字段,已知的是百度经纬度,只需要知道街道、街道行政编码即可。

第一步:参考他人写的代码 https://blog.csdn.net/WangKun_0612/article/details/115119422
—————————————————————————————————————————————
第二步:稍作改动,再根据已经写好的http工具类进行改动

/**
     * 
     * @param lat
     * @param lon
     * @return
     */
    private JSONObject getTownByLonAndLat(String lat,String lon){
        Map<String,String> map = getMap();//参数
        map.put("ak", "SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR");//申请百度开放平台KEY(ak)
        map.put("output", "json");// 输出Json数据
        map.put("extensions_town", "true");// 行政区划返回乡镇级数据(town),仅国内召回乡镇数据
        map.put("coordtype", "wgs84ll"); // GPS 经纬度类型
        map.put("location", lat+","+lon+"");//百度经纬度
      
        String url = "http://api.map.baidu.com/reverse_geocoding/v3/";
      
        List<Header> headers = new ArrayList<>();//header
      
        String str = HttpUtil.getResult(url,map,headers);
      
        JSONObject jsonObject = JSONObject.parseObject(str);
      
        return jsonObject.getJSONObject("result").getJSONObject("addressComponent");
    }

HttpUtil http工具方法

/**
     * get请求
     *
     * @param url 请求地址
     * @param map 参数集
     * @return String
     */
    public static String getResult(String url, Map<String, String> map, List<Header> headers) {
        String entityStr = null;
        try {
            entityStr = getRequestMethod(map, url, HttpGet.METHOD_NAME, headers);
        } catch (IOException e) {
            log.error("IO异常");
            e.printStackTrace();
        }
        return entityStr;
    }
/**
     * 获取请求结果
     *
     * @param map    参数集
     * @param url    请求地址
     * @param method 请求方式
     * @return String
     * @throws IOException
     */
    public static String getRequestMethod(Map<String, String> map, String url, String method, List<Header> headers) throws IOException {
        List<NameValuePair> params = new ArrayList<>(4);
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        for (Map.Entry<String, String> e : entrySet) {
            String name = e.getKey();
            String value = e.getValue();
            NameValuePair pair = new BasicNameValuePair(name, value);
            params.add(pair);
        }
        HttpClient client = getConnection();
        HttpResponse response = client.execute(getRequestMethod(params, url, method, headers));
        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            HttpEntity entity = response.getEntity();
            return EntityUtils.toString(entity, StandardCharsets.UTF_8);
        } else {
            log.error("请求失败 {}", url);
        }
        HttpEntity entity = response.getEntity();
        return EntityUtils.toString(entity, StandardCharsets.UTF_8);
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值