package com.monitoring.controllers;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;
import com.monitoring.common.util.CommonsUtil;
import com.monitoring.common.util.ResponseObject;
import net.paoding.rose.web.Invocation;
import net.paoding.rose.web.annotation.Path;
import net.paoding.rose.web.annotation.rest.Get;
@Path("/position")
public class LatAndLngByBaiduController {
/**
* KEY:(开发者密钥).
* @since JDK 1.6
*/
private static final String KEY = "6rvfbX55tkIitRoMzcNsdegBzajdVab0";
@Get("/getCoordinate")
public String getCoordinate(Invocation inv) {
String path = "hello world1";
return "@" + CommonsUtil.returnObjectToJson(ResponseObject.newSuccessResponseObject(path));
}
/**
* @param addr
* 查询的地址
* @return
* @throws IOException
*/
private Map<String,String> getCoordinate(String addr) throws IOException {
String address = null;
try {
address = java.net.URLEncoder.encode(addr, "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// String key = "6rvfbX55tkIitRoMzcNwfrgBzajdVBw0";
String url = String.format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, KEY);
url = String.format("http://api.map.baidu.com/geocoder/v2/?address=%s&output=json&ak=%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;
StringBuilder sb = new StringBuilder();
while ((data = br.readLine()) != null) {
sb.append(data);
}
JSONObject object = new JSONObject(sb.toString());
int status = object.getInt("status");
if(0 == status) {
JSONObject result = object.getJSONObject("result");
JSONObject location = result.getJSONObject("location");
// System.out.println(location);
String lng =String.valueOf(location.get("lng"));// 经度
String lat = String.valueOf(location.get("lat"));// 纬度
Map<String, String> map = new HashMap<String, String>();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (insr != null) {
insr.close();
}
if (br != null) {
br.close();
}
}
return null;
}
public static void main(String[] args) throws IOException {
LatAndLngByBaiduController getLatAndLngByBaidu = new LatAndLngByBaiduController();
Map<String,String> map = getLatAndLngByBaidu.getCoordinate("杭州市");
System.out.println(map.get("lng"));// 经度
System.out.println(map.get("lat"));// 经度
}
}
Java根据百度API获得经纬度
最新推荐文章于 2024-08-09 15:16:49 发布