调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
来源:互联网 发布:靠谱韩国代购淘宝店 编辑:程序博客网 时间:2024/05/01 16:40
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[]) {
System.out.print("福建省福州市闽侯县福州大学:");
System.out.print("经度"+map.get("lng"));
System.out.print(",纬度"+map.get("lat"));
System.out.println();
}
}
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));}
}
阅读全文
0 0
- 调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
- 根据百度地图JSAPI查找某个地址的经纬度坐标
- 根据经纬度,找到地址信息(调用android地图百度API)
- 百度地图应用:根据两个地址的经纬度求距离;根据地址求经纬度;根据经纬度求地址
- 【Java】 java调用百度地图API根据地理位置中文获取经纬度 地址备忘
- 百度地图根据经纬度取得具体的一个地址
- 通过百度地图API找到地址名的经纬度
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 根据地址返回经纬度(使用百度地图API)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图API之根据经纬度查询地址信息(Android)
- python根据百度地图api将地址转成经纬度
- 百度地图API之根据经纬度查询地址信息(Android)
- 百度地图:获取地址的经纬度
- STL模拟实现1.0 -- list和iterator模拟实现和简单分析
- 第一周LeetCode
- hdu1533(费用流模板)
- 贪心算法
- Codeforces-682A:Alyona and Numbers(水题)
- 调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
- TableLayout与ViewPager联动
- 【算法导论33】跳跃表(Skip list)原理与java实现
- QT之使用QMutex/ QMutexLocker互斥量同步线程小例子
- Asp.net MVC3 自定义HtmlHelper控件
- The SetStack Computer UVA
- 继承
- CentOS7 安装Chrome浏览器
- Java命名约定