根据经纬度查询地址

来源:互联网 发布:淘宝客服聊天字体颜色 编辑:程序博客网 时间:2024/05/01 14:41
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;import cn.eeepay.cache.SystemParamsCache;import cn.toruk.pub.Log;/*** * 根据经纬度,查百度的API得到地址 *  * @author  */public class GetAdressByBaidu {/** * @Description:返回JSON格式的,根据经纬度找到的地址 ,传入的经纬度 如:39.917149,116.421516 *                                   错误返回,null; 正确返回 *                                   例:{"result":{"addressComponent" *                                   :{"street" :"东单三条","province":"北京市", *                                   "street_number" *                                   :"9号","district":"东城区","city" *                                   :"北京市"},"location" *                                   :{"lng":116.421516,"lat" *                                   :39.917149},"cityCode" *                                   :131,"formatted_address" *                                   :"北京市东城区东单三条9号", *                                   "business":"东单,王府井,灯市口"},"status":"OK"} * @author 张红亮 * @date 2014-3-27 上午10:19:14 */public static JSONObject getCoordinate(String latAndLng) {JSONObject jsonObject = null;if (null != latAndLng && StringUtils.isNotBlank(latAndLng)) {StringBuffer resultBuffer = new StringBuffer();String key = SystemParamsCache.getParamValue("BAIDU_API_KEY");// String key = "=NQWAkrl87NqPEjNjzTYLh3TR";String url = String.format("http://api.map.baidu.com/geocoder?output=json&location=%s&key=%s",latAndLng, key);URL baiDuUrl = null;URLConnection httpsConn = null;InputStreamReader insr = null;BufferedReader br = null;try {baiDuUrl = new URL(url);httpsConn = (URLConnection) baiDuUrl.openConnection();// 不使用代理if (httpsConn != null) {insr = new InputStreamReader(httpsConn.getInputStream(),"UTF-8");br = new BufferedReader(insr);String data = null;while ((data = br.readLine()) != null) {resultBuffer.append(data);}}jsonObject = new JSONObject(resultBuffer.toString());} catch (Exception e) {Log.print("取百度的地址错误--》", e);} finally {try {if (insr != null) {insr.close();}if (br != null) {br.close();}} catch (Exception n) {Log.print("取百度的地址错误--》", n);}}}return jsonObject;}/** * 将JSON对象,转换后放到MAP并返回 *  * @author 张红亮 * @date 2014-3-27 上午10:19:14 * @param map *            传入要加入值的MAP * @param resultMap *            返回传入的MAP * @return 根据getCoordinate方法取的JSON对象再转为MAP *         例:result--{"addressComponent":{"street" *         :"东单三条","province":"北京市","street_number" *         :"9号","district":"东城区","city" *         :"北京市"},"location":{"lng":116.421516, *         "lat":39.917149},"cityCode":131 *         ,"formatted_address":"北京市东城区东单三条9号","business":"东单,王府井,灯市口"} *         status--OK location--{"lng":116.421516,"lat":39.917149} *         street--东单三条 cityCode--131 lng--116.421516 business--东单,王府井,灯市口 *         city--北京市 *         addressComponent--{"street":"东单三条","province":"北京市","street_number" *         :"9号","district":"东城区","city":"北京市"} province--北京市 *         formatted_address--北京市东城区东单三条9号 street_number--9号 district--东城区 *         lat--39.917149 */@SuppressWarnings("unchecked")public static Map<String, String> getMapKeyValue(JSONObject map,Map<String, String> resultMap) {try {Iterator it = map.keys();while (it.hasNext()) {String key = (String) it.next();String value = map.getString(key);resultMap.put(key, value);Object array = map.get(key);if (array instanceof JSONObject) {getMapKeyValue((JSONObject) array, resultMap);}}} catch (JSONException e) {Log.print("解析地址失败!", e);}return resultMap;}/** * 根据返回的数据,取到省,市,区的值放入,MAP中并返回 *  * @author 张红亮 * @date 2014-3-27 上午10:19:14 key---province ,city ,area * @param latAndLng *            经纬度值 * @param resultMap *            需传入的MAP * @return */public static Map<String, String> getProCitAreValue(String latAndLng,Map<String, String> resultMap) {Map<String, String> valueMap = getMapKeyValue(getCoordinate(latAndLng),resultMap);resultMap.put("province", valueMap.get("province"));resultMap.put("city", valueMap.get("city"));resultMap.put("area", valueMap.get("district"));return resultMap;}/** * @param args */public static void main(String[] args) throws Exception {JSONObject map = getCoordinate("39.917149,116.421516");Map<String, String> map2 = new HashMap<String, String>();map2 = getMapKeyValue(map, map2);Iterator<String> it = map2.keySet().iterator();while (it.hasNext()) {String key = (String) it.next();String value = (String) map2.get(key);System.out.println(key + "--" + value);}}}

0 0
原创粉丝点击