百度地图根据经纬度反查省市区或附件位置

小冷在使用百度地图滑动回调监听附近位置时候,发现省市区这几个字段拿不到,但经纬度可以拿到,项目中省市区这三个字段又必须要取到,所以只能通过先通过经纬度信息调用百度地图api 反解省市区信息。


百度地图根据经纬度反查省市区或附件位置_第1张图片
83b9b26ce206066a4ca2c17e6b9ffcd.png

1. 需要参数


"http://api.map.baidu.com/geocoder/v2/?ak=key&mcode=mcode" + latitude + "," + longitude + "&output=json&pois=1"

替换url中的key和mcode和经纬度

  1. key (申请的key)
  2. mcode(百度地图控制台的sha1+包名拼成的串)
  3. 经纬度

2.方法

    private void getLocation(final float longitude, final float latitude) {

        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL("http://api.map.baidu.com/geocoder/v2/?ak=key&mcode=mcode" + latitude + "," + longitude + "&output=json&pois=1");
                    HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
                    ucon.connect();

                    InputStream in = ucon.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
                    String str = reader.readLine();
                    //outprint.print(str);
                    str = str.substring(str.indexOf("(") + 1, str.length() - 1);
      /*              str = str.substring(str.indexOf("(") + 1, str.length()-1);
                    //outprint.print(str);

                    JSONObject jsonObject = new JSONObject(str);
                    String address = "";
                    address = jsonObject.getJSONObject("result").getString("formatted_address");*/
                    AddressModel addressModel = GsonUtil.fromJson(str, AddressModel.class);
                    addressComponent = addressModel.getResult().getAddressComponent();
                    handler.sendEmptyMessage(1);


                    Log.i("", "");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();


    }

你可能感兴趣的:(百度地图根据经纬度反查省市区或附件位置)