调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
2017-09-15 19:48
1606 查看
package baiduapi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
public class BaiDuApiTest {
private static final String BAIDU_APP_KEY = "你的ak";
/**
* 输入中文地址 lng(经度),lat(纬度)
*/
public static Map<String, Double> getLatitude(String address) {
String res;
try {
// 将地址转换成utf-8的16进制
address = URLEncoder.encode(address, "UTF-8");
URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address="+address+"&ak="+ BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
if(str!=null&&!str.equals("")){
Map<String, Double> map = null;
String subStr = str.substring(str.indexOf('(')+1, str.indexOf("})")+1);
//字符串转成json格式
JSONObject jsonObj = JSONObject.fromObject(subStr);
//获取经度
double lng=(double) jsonObj.getJSONObject("result").getJSONObject("location").get("lng");
//获取纬度
double lat=(double) jsonObj.getJSONObject("result").getJSONObject("location").get("lat");
map = new HashMap<String, Double>();
map.put("lng", lng);
map.put("lat", lat);
//返回经纬度
return map;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/*
* 输入地址的经纬度坐标 key lng(经度),lat(纬度),返回中文地址
*/
public static String getAddress(Map<String, Double> map){
String res;
String address=null ;
try {
URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location="+map.get("lat")+","+map.get("lng")+"&output=json&pois=1&ak="+BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
String subStr = str.substring(str.indexOf('(')+1, str.indexOf("})")+1);
JSONObject jsonObj = JSONObject.fromObject(subStr);
//获取匹配到的中文地址
address=(String) jsonObj.getJSONObject("result").get("formatted_address");
} catch (Exception e) {
e.printStackTrace();
}
return address;
}
public static void main(String args[]) {
Map<String, Double> map = BaiDuApiTest.getLatitude("福建省福州市仓山区福建农林大学");
//输出地址所对应的经纬度
if (null != map) {
System.out.print("福建省福州市闽侯县福州大学:");
System.out.print("经度"+map.get("lng"));
System.out.print(",纬度"+map.get("lat"));
System.out.println();
}
//输出经纬度对应的中文地址
System.out.println("经度"+map.get("lng")+",纬度"+map.get("lat")+" 对应的中文地址是:"+BaiDuApiTest.getAddress(map));
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
public class BaiDuApiTest {
private static final String BAIDU_APP_KEY = "你的ak";
/**
* 输入中文地址 lng(经度),lat(纬度)
*/
public static Map<String, Double> getLatitude(String address) {
String res;
try {
// 将地址转换成utf-8的16进制
address = URLEncoder.encode(address, "UTF-8");
URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address="+address+"&ak="+ BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
if(str!=null&&!str.equals("")){
Map<String, Double> map = null;
String subStr = str.substring(str.indexOf('(')+1, str.indexOf("})")+1);
//字符串转成json格式
JSONObject jsonObj = JSONObject.fromObject(subStr);
//获取经度
double lng=(double) jsonObj.getJSONObject("result").getJSONObject("location").get("lng");
//获取纬度
double lat=(double) jsonObj.getJSONObject("result").getJSONObject("location").get("lat");
map = new HashMap<String, Double>();
map.put("lng", lng);
map.put("lat", lat);
//返回经纬度
return map;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/*
* 输入地址的经纬度坐标 key lng(经度),lat(纬度),返回中文地址
*/
public static String getAddress(Map<String, Double> map){
String res;
String address=null ;
try {
URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location="+map.get("lat")+","+map.get("lng")+"&output=json&pois=1&ak="+BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
String subStr = str.substring(str.indexOf('(')+1, str.indexOf("})")+1);
JSONObject jsonObj = JSONObject.fromObject(subStr);
//获取匹配到的中文地址
address=(String) jsonObj.getJSONObject("result").get("formatted_address");
} catch (Exception e) {
e.printStackTrace();
}
return address;
}
public static void main(String args[]) {
Map<String, Double> map = BaiDuApiTest.getLatitude("福建省福州市仓山区福建农林大学");
//输出地址所对应的经纬度
if (null != map) {
System.out.print("福建省福州市闽侯县福州大学:");
System.out.print("经度"+map.get("lng"));
System.out.print(",纬度"+map.get("lat"));
System.out.println();
}
//输出经纬度对应的中文地址
System.out.println("经度"+map.get("lng")+",纬度"+map.get("lat")+" 对应的中文地址是:"+BaiDuApiTest.getAddress(map));
}
}
相关文章推荐
- 【Java】 java调用百度地图API根据地理位置中文获取经纬度 地址备忘
- java调用百度地图API根据地理位置中文获取经纬度
- java调用百度地图API通过URL根据地理位置中文处理返回值获取经纬度
- java调用百度地图API根据地理位置中文获取经纬度
- 百度地图API简单应用——1.根据地址查询经纬度
- 百度地图api基本用法和一些demo[根据地址查询经纬度,并进行动态标注BMap.Marker地点]
- 【百度地图API】当地址解析失败时,如何调用search方法查找地址
- Android百度公交开发(四)——百度地图API之根据经纬度查询地址信息
- 百度地图API简单应用——1.根据地址查询经纬度
- [010] 百度地图API之根据经纬度查询地址信息(Android) .
- 【百度地图API】当地址解析失败时,如何调用search方法查找地址
- [010] 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API简单应用——1.根据地址查询经纬度
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- java调用百度地图API依据地理位置中文获取经纬度
- python根据百度地图api将地址转成经纬度
- 网站调用百度地图 根据地址查询经纬度
- 根据经纬度获取地址(中文地址以及地址code)
- Android如何根据百度地图api将具体地址转化为经纬度啊