1、通過地址獲取該地址的經緯度
/**
* @param addr
* 查詢的地址
* @return
* @throws IOException
*/
public Object[] getCoordinate(String addr) throws IOException {
String lng = null;//經度
String lat = null;//緯度
String address = null;
try {
address = java.net.URLEncoder.encode(addr, "UTF-8");
}catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String key = "f247cdb592eb43ebac6ccd27f796e2d2";
String url = String .format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, key);
URL myURL = null;
URLConnection httpsConn = null;
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
InputStreamReader insr = null;
BufferedReader br = null;
try {
httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
if (httpsConn != null) {
insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8");
br = new BufferedReader(insr);
String data = null;
int count = 1;
while((data= br.readLine())!=null){
if(count==5){
lng = (String)data.subSequence(data.indexOf(":")+1, data.indexOf(","));//經度
count++;
}else if(count==6){
lat = data.substring(data.indexOf(":")+1);//緯度
count++;
}else{
count++;
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(insr!=null){
insr.close();
}
if(br!=null){
br.close();
}
}
return new Object[]{lng,lat};
}
測試:
public static void main(String[] args) throws IOException {
GetLocation getLatAndLngByBaidu = new GetLocation();
Object[] o = getLatAndLngByBaidu.getCoordinate("成都市天府四街");
System.out.println(o[0]);//經度
System.out.println(o[1]);//緯度
}
結果:
104.063832
30.54855
2、通過某個經緯度獲取該經緯度的地址
public static void getCityFromLngAndlat() {
//通過修改這裏的location(經緯度)參數,即可得到相應經緯度的詳細信息
String url2 = "http://api.map.baidu.com/geocoder/v2/?ak=pmCgmADsAsD9rEXkqWNcTzjd&location=22.75424,112.76535&output=json&pois=1 ";
URL myURL2 = null;
URLConnection httpsConn2 = null;
try {
myURL2 = new URL(url2);
} catch (MalformedURLException e) {
e.printStackTrace();
}
InputStreamReader insr2 = null;
BufferedReader br2 = null;
try {
httpsConn2 = (URLConnection) myURL2.openConnection();// 不使用代理
if (httpsConn2 != null) {
insr2 = new InputStreamReader( httpsConn2.getInputStream(), "UTF-8");
br2 = new BufferedReader(insr2);
String data2 = br2.readLine();
try {
//解析得到的json格式數據
JSONObject dataJson = new JSONObject(data2);
JSONObject result = dataJson.getJSONObject("result");
JSONObject addressComponent = result.getJSONObject("addressComponent");
String city = addressComponent.getString("city");
System.out.println("city = " + city);
} catch (JSONException e){
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(insr2!=null){
insr2.close();
}
if(br!=null){
br2.close();
}
}
}
獲取的json數據如下:
{
"status": 0,
"result": {
"location": {
"lng": 112.76535000506,
"lat": 22.754240005123
},
"formatted_address": "廣東省佛山市高明區X492",
"business": "",
"addressComponent": {
"city": "佛山市",
"country": "中國",
"direction": "",
"distance": "",
"district": "高明區",
"province": "廣東省",
"street": "X492",
"street_number": "",
"country_code": 0
},
"pois": [
{
"addr": "佛山市高明區",
"cp": "NavInfo",
"direction": "東北",
"distance": "680",
"name": "皁幕山泉",
"poiType": "公司企業",
"point": {
"x": 112.76102978437,
"y": 22.750226120112
},
"tag": "公司企業",
"tel": "",
"uid": "ea4a3dc9e82219534e5547fc",
"zip": ""
},
{
"addr": "四九二縣道井頭圩附近",
"cp": "NavInfo",
"direction": "東北",
"distance": "690",
"name": "鄉下酒樓",
"poiType": "美食",
"point": {
"x": 112.76288029372,
"y": 22.748959622733
},
"tag": "美食;中餐廳",
"tel": "",
"uid": "b292b3aa9bf25c28be48422f",
"zip": ""
},
{
"addr": "四九二縣道井頭村附近",
"cp": "NavInfo",
"direction": "東北",
"distance": "724",
"name": "雄英酒樓",
"poiType": "美食",
"point": {
"x": 112.76211673404,
"y": 22.74900128402
},
"tag": "美食;中餐廳",
"tel": "",
"uid": "abe37f62d7e119b6cd04efd2",
"zip": ""
},
{
"addr": "四九二縣道井頭村附近",
"cp": "NavInfo",
"direction": "東北",
"distance": "730",
"name": "名峯酒樓",
"poiType": "美食",
"point": {
"x": 112.75995181776,
"y": 22.750776042908
},
"tag": "美食;中餐廳",
"tel": "",
"uid": "2fb890627b93c3a7c91b95e2",
"zip": ""
},
{
"addr": "楊和鎮",
"cp": "NavInfo",
"direction": "東北",
"distance": "757",
"name": "山村菜館",
"poiType": "美食",
"point": {
"x": 112.76165859823,
"y": 22.748934625955
},
"tag": "美食;中餐廳",
"tel": "",
"uid": "637df60ac6f49c7241afe68b",
"zip": ""
}
],
"poiRegions": [ ],
"sematic_description": "皁幕山泉東北680米",
"cityCode": 138
}
}