百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。
api官网说明链接:
可用接口列举:
获取相关地址提示 place suggestion
获取坐标 geocoding
{
"status":0,
"message":"ok",
"total":2,
"results":[
{
"name":"蓝光COCO金沙",
"location":{
"lat":30.687544,
"lng":103.996691
},
"address":"西三环外金沙西源大道(IT大道旁)",
"uid":"223992992c5ee7e0841541df"
},
{
"name":"蓝光COCO金沙2期",
"location":{
"lat":30.681123,
"lng":103.991123
},
"address":"青羊区金沙IT大道旁",
"uid":"b7bb5abb1cd4982213293580"
}
]
}
设施导航
http://api.map.baidu.com/place/v2/search?ak=42b8ececa9cd6fe72ae4cddd77c0da5d&output=json&query=图书馆&page_size=20&page_num=0&scope=2®ion=成都
获取坐标接口直接在浏览器请求的结果如下:
新建一个类,代码如下:
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.util.HashMap;
- import java.util.Map;
- public class LocationUtil {
- private static final String BAIDU_APP_KEY = "42b8ececa9cd6fe72ae4cddd77c0da5d";
- /**
- * 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
- */
- public static Map<String, String> getLatitude(String address) {
- try {
- // 将地址转换成utf-8的16进制
- address = URLEncoder.encode(address, "UTF-8");
- // 如果有代理,要设置代理,没代理可注释
- // System.setProperty("http.proxyHost","192.168.172.23");
- // System.setProperty("http.proxyPort","3209");
- URL resjson = new URL("http://api.map.baidu.com/geocoder?address="
- + address + "&output=json&key=" + BAIDU_APP_KEY);
- BufferedReader in = new BufferedReader(new InputStreamReader(
- resjson.openStream()));
- String res;
- StringBuilder sb = new StringBuilder("");
- while ((res = in.readLine()) != null) {
- sb.append(res.trim());
- }
- in.close();
- String str = sb.toString();
- System.out.println("return json:" + str);
- if(str!=null&&!str.equals("")){
- Map<String, String> map = null;
- int lngStart = str.indexOf("lng\":");
- int lngEnd = str.indexOf(",\"lat");
- int latEnd = str.indexOf("},\"precise");
- if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
- String lng = str.substring(lngStart + 5, lngEnd);
- String lat = str.substring(lngEnd + 7, latEnd);
- map = new HashMap<String, String>();
- map.put("lng", lng);
- map.put("lat", lat);
- return map;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- public static void main(String args[]) {
- Map<String, String> map = LocationUtil.getLatitude("成都 高新西区西区大道1398号");
- if (null != map) {
- System.out.println(map.get("lng"));
- System.out.println(map.get("lat"));
- }
- }
- }
|