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
}
}