c语言从坐标获取行政区代码,获取不规则地址的省市区编码(调用百度地图API)

一、进入百度地图开发平台

41b02350fbc0aba09c71127a8ef93168.png

二、编写java代码,调用百度的API

1、根据不规则的地址信息获取对应的"纬度,经度"

/**

* 根据详细地址获取经纬度

* @param addr

* @return

* @throws IOException

*/

private static String getGeocoderLatitude(String address) throws IOException{

//纬度

String lat = "";

//经度

String lng = "";

String addr = URLEncoder.encode(address, "UTF-8");

URL url = new URL("http://api.map.baidu.com/geocoder/v2/?address=" + addr + "&output=json&ak=" + bdMapAK);

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

String res;

StringBuilder sb = new StringBuilder();

while ((res = in.readLine()) != null) {

sb.append(res.trim());

}

//System.out.println(sb.toString());

JSONObject jsonData = JSONObject.fromObject(sb.toString());

JSONObject result = (JSONObject) jsonData.get("result");

JSONObject location = (JSONObject) result.get("location");

if(null != location.get("lng") && null != location.get("lat")){

lat = location.get("lat").toString();

lng = location.get("lng").toString();

}

return lat + "," + lng;

}

2、根据经纬度获取当前地址的行政区划信息

/**

* 根据经纬度坐标解析地址详情

* @param LatitudeAndLongitude

* @return

* @throws UnsupportedEncodingException

* @throws IOException

*/

private static String getposition(String LatitudeAndLongitude)

throws UnsupportedEncodingException, IOException {

BufferedReader in = null;

URL url = new URL("http://api.map.baidu.com/geocoder/v2/?location=" + LatitudeAndLongitude + "&output=json&ak="

+ bdMapAK);

in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

String res;

StringBuilder sb = new StringBuilder("");

while ((res = in.readLine()) != null) {

sb.append(res.trim());

}

//System.out.println(sb.toString());

JSONObject jsonData = JSONObject.fromObject(sb.toString());

JSONObject result = (JSONObject) jsonData.get("result");

JSONObject addressComponent = (JSONObject) result.get("addressComponent");

System.out.println("省:" + addressComponent.get("province").toString());

System.out.println("市:" + addressComponent.get("city").toString());

System.out.println("区:" + addressComponent.get("district").toString());

System.out.println("省-编码:"+ getPAdCode(addressComponent.get("adcode").toString()));

System.out.println("市-编码:"+ getCAdCode(addressComponent.get("adcode").toString()));

System.out.println("区-编码:"+ addressComponent.get("adcode").toString());

return "";

}

3、运行结果示例

public static void getAddrCode(String address) throws IOException{

String str = getGeocoderLatitude(address);

getposition(str);

}

public static void main(String[] args) {

try {

Test2.getAddrCode("天安门");

} catch (IOException e) {

e.printStackTrace();

}

}

b5f66352884e62fca03c8e962a6a5087.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值