1.什么是Geocoding?

Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送HTTP请求且接收JSON、XML的返回数据。

通过地址获得经纬度(百度Geocoding API)

2.功能介绍

Geocoding API包括地址解析和逆地址解析功能。

  • 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”
  • 逆地理编码,即逆地址解析,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。

 

3.如何使用

百度地图Geocoding API是一套免费对外开放的API,无使用次数限制。使用方法:

第一步:申请ak(即获取密钥),若无百度账号则首先需要注册百度账号

第二步,拼写发送http请求的url,注意需使用第一步申请的ak。

第三步,接收http请求返回的数据(支持json和xml格式)。

以下是一个关于地理编码的简单示例。发送一个地址是“百度大厦”的请求,返回该地址对应的地理坐标。发送请求的url如下:

http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation 
4.java调用测试
 1 package addressToGeoTest;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9 import java.io.InputStreamReader;
10 import java.io.OutputStreamWriter;
11 import java.net.URL;
12 import java.net.URLEncoder;
13 import java.util.*;
14 
15 public class GetLatAndLngByBaidu {
16  
17  public static void main(String args[]){
18      
19      String cnAddress="北京市海淀区上地十街10号";
20      Map<String,String> map = GetLatAndLngByBaidu.getLatitude(cnAddress);
21         if(null != map){
22             System.out.println(cnAddress+"    经度:"+map.get("lng")+"    纬度:"+map.get("lat"));
23         }
24  }
25  /**
26   * 返回输入地址的经纬度坐标
27   * lng(经度),lat(纬度)
28   */
29  //1,申请ak(即获取密钥),若无百度账号则首先需要注册百度账号。
30  public static final String AK= "VGqyTtpnqfNxkTkPBG5APrGO"; 
31  public static Map<String,String> getLatitude(String address){
32       try {
33        address = URLEncoder.encode(address, "UTF-8");          //将地址转换成utf-8的16进制
34           //2, 拼写发送http请求的url,注意需使用第一步申请的ak。
35           //3, 接收http请求返回的数据(支持json和xml格式)本次采用json形式
36        URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?address="
37                           + address +"&output=json&ak="+ AK); 
38        BufferedReader in = new BufferedReader(
39                           new InputStreamReader(resjson.openStream()));
40        String res;
41        StringBuilder sb = new StringBuilder("");
42        while((res = in.readLine())!=null){
43         sb.append(res.trim());
44        }
45        in.close();
46        String str = sb.toString();
47        //System.out.println("return json:"+str);
48        Map<String,String> map = null;
49        if(str!=null){
50         int lngStart = str.indexOf("lng\":");
51         int lngEnd = str.indexOf(",\"lat");
52         int latEnd = str.indexOf("},\"precise");
53         if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
54          String lng = str.substring(lngStart+5, lngEnd);
55          String lat = str.substring(lngEnd+7, latEnd);
56          map = new HashMap<String,String>();
57          map.put("lng", lng);
58          map.put("lat", lat);
59          return map;
60         }
61        }
62       }catch (Exception e) {
63        e.printStackTrace();
64       }
65       return null;
66      }
67 }
View Code

相关文章: