获取不规则地址的省市区编码(调用百度地图API)

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

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

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

/**
* 根据详细地址获取经纬度
* @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;
}

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

/**
	 * 根据经纬度坐标解析地址详情
	 * @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 "";

	}

三、运行结果示例

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();
		}
	}

相关文章
相关标签/搜索