Java 百度地图 根据名称获取坐标(经纬度)

该博客主要展示了如何利用百度地图API进行地理位置搜索。通过指定地址名称、召回城市(泰兴市)和区域数据召回限制参数,获取坐标的Java代码实现。在请求中使用了非法的AK(SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR),实际应用中需正确申请并使用自己的百度开放平台KEY。
摘要由CSDN通过智能技术生成

申请百度开放平台KEY(ak) 没申请,随便找了一个

参数说明:
region:召回城市
city_limit:区域数据召回限制

这两个参数必须配合使用,city_limit为true时,仅召回region对应区域内数据

 /**
     * @param addressName
     * @Description 获取坐标
     * @Throws
     * @Return java.util.Map<java.lang.String, java.math.BigDecimal>
     * @Date 2021-03-19 13:53:22
     * @Author WangKun
     **/
    public static Map<String, BigDecimal> getLatAndLngByAddressName(String addressName) {
        Map<String, BigDecimal> map = new HashMap<>();
        try {
            String address = URLEncoder.encode(addressName, "UTF-8");
            String urlAddress = "http://api.map.baidu.com/place/v2/search?query="+address+"&region=泰兴市&city_limit=true&output=json&ak=SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR";
            StringBuilder sb = new StringBuilder();
            URL url = new URL(urlAddress);
            URLConnection connection = url.openConnection();
            if (connection != null) {
                InputStreamReader insr = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
                BufferedReader br = new BufferedReader(insr);
                String data;
                while ((data = br.readLine()) != null) {
                    sb.append(data);
                }
                insr.close();
            }
            String str = sb.toString();
            if (StringUtils.isNotBlank(str)  && StringUtils.isNotEmpty(str)) {
                JSONObject json = JSON.parseObject(str);
                if (json.get("message").toString().equals("ok")) {
                    JSONArray jsonArray = (JSONArray) json.get("results");
                    if (null != jsonArray && jsonArray.size() > 0) {
                        // 取最近一个点
                        JSONObject resultObj = (JSONObject) jsonArray.get(0);
                        JSONObject locationObj = (JSONObject) resultObj.get("location");
                        if (null != locationObj) {
                            map.put("lng", (BigDecimal) locationObj.get("lng"));
                            map.put("lat", (BigDecimal) locationObj.get("lat"));
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return map;
    }

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值