Java后台调用百度图API坐标定位以及地点检索

Java后台调用百度图API坐标定位以及地点检索

    • 百度地图API密钥
    • 功能实现

在实现这两个功能的过程中,查找过不少资料,但都是前台实现居多。下面链接是我参考的例子,实现时做了些改动弄。
参考例子: https://blog.csdn.net/ghjzzhg/article/details/78193739

百度地图API密钥

要调用百度地图,必须要先申请好密钥,密钥申请在百度地图API服务网站:
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

功能实现

首先,百度地图Web服务一般是通过拼凑url进行访问,然后我们以流的形式读取数据,如下

/**
	 * 访问传入的地址查找的URL参数,获取位置信息
	 * @param url
	 * @return
	 */
	 public final static String loadJSON (String url) {
	        StringBuilder json = new StringBuilder();
	        try {
	            URL oracle = new URL(url);
	            URLConnection yc = oracle.openConnection();
	            BufferedReader in = new BufferedReader(new InputStreamReader(
	                    yc.getInputStream(),"UTF-8"));	//之前没有添加UTF-8,得到的结果中的中文都是乱码
	            String inputLine = null;
	            while ( (inputLine = in.readLine()) != null) {
	                json.append(inputLine);
	            }
	            in.close();
	        } catch (Exception e) {
	        }
	        return json.toString();
	    }

然后,就先实现坐标定位功能

//AK为密钥,因为我需要查询的坐标不止一个,所以传过来的经度和纬度都用集合传过来,并将结果拼成jsonArray返回

	public final static JSONArray getLocationInfo(List lat, List lng,String AK) {
		JSONArray jsonArray = new JSONArray();
		String AK1 = AK;
		for(int i=0;i

地点检索功能:

//同样,AK为密钥,address为要查询的地址
public final static JSONArray getLngAndLat(String address,String AK) throws IOException{
		String AK1 = AK;
		
		//若检索行政区或查询地址等参数有出现中文是,现将它们进行转码,可能有些情况下会无法对中文进行解析
        address = URLEncoder.encode(address, "UTF-8");		
        String region = URLEncoder.encode("北京", "UTF-8");	//检索行政区,就是在哪个城市进行检索
        String url = "http://api.map.baidu.com/place/v2/search?query="+address+"®ion="+region+"&output=json&ak="+AK1;
        JSONArray jsonArray = null;
        String json = loadJSON(url);
        JSONObject obj = JSONObject.fromObject(json);
        
        //成功返回位置数据数据,返回的status属性为0即成功获取数据
        //返回的jsonObject内包含json数组记录数据,本人需要对结果格式修改,就将数组单独提取返回;
        if(obj.containsKey("status")&&(int)obj.get("status")==0) {
        	jsonArray = obj.getJSONArray("results");
        }
        
        //若检索行政区不存在关键字相关地址,API会返回其他城市搜索结果,返回格式不同,只有城市city、符合搜索位置数量num两个属性。
        //将返回格式中没有location、name、address的jsonObject移除
        for(int i=0;jsonArray!=null&&i

以上为实现的过程。

你可能感兴趣的:(Java后台调用百度图API坐标定位以及地点检索)