XYUtils —— 获取经纬度工具类
生活随笔
收集整理的這篇文章主要介紹了
XYUtils —— 获取经纬度工具类
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package com.cy.test;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;public class XYUtils {// 高德地圖keyprivate static final String GDMAP_KEY = "高德地圖密鑰";// 高德地圖地理編碼 API 服務(wù)地址private static final String gdUrl = "https://restapi.amap.com/v3/geocode/geo?parameters";// 高德地圖逆地理編碼API服務(wù)地址private static final String reverseGeocodingGdUrl = "https://restapi.amap.com/v3/geocode/regeo?parameters";// 百度地圖AKprivate static final String BDMAP_AK = "百度地圖密鑰";// 百度地圖地理編碼 API 服務(wù)地址private static final String geocodingBdUrl = "http://api.map.baidu.com/geocoding/v3/?output=json";// 百度地圖逆地理編碼 API 服務(wù)地址private static final String reverseGeocodingBdUrl = "http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=wgs84ll";// 百度地圖獲取地址的經(jīng)緯度public static Map<String, String> getXYByBaiduMap(String address) {Map<String, String> xyMap = new HashMap<>();xyMap.put("status", "0"); // 初始化Map<String, String> params = new HashMap<>();params.put("address", address);params.put("ak", BDMAP_AK);// 調(diào)用百度地圖API獲取地址經(jīng)緯度,結(jié)果例:showLocation&&showLocation({"status":0,"result":{"location":{"lng":117.07158975107194,"lat":36.68565553471069},"precise":0,"confidence":20,"comprehension":100,"level":"區(qū)縣"}})String result = HttpClientUtils.doGet(geocodingBdUrl, params, null);// 將結(jié)果轉(zhuǎn)換,方便取值JSONObject jsonObject = JSONObject.parseObject(result);// status 為0時(shí)為正常,詳情見http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocodingif ("0".equals(jsonObject.getString("status"))) {JSONObject resultObj = JSONObject.parseObject(jsonObject.getString("result")); // 結(jié)果集JSONObject locationObj = JSONObject.parseObject(resultObj.getString("location")); // 地址信息String longitude = locationObj.getString("lng"); // 經(jīng)度String latitude = locationObj.getString("lat"); // 緯度// 將經(jīng)緯度存入map中,返回?cái)?shù)據(jù)xyMap.put("latitude", latitude);xyMap.put("longitude", longitude);xyMap.put("status", "1");}return xyMap;}// 根據(jù)經(jīng)緯度返回具體地址.(緯度,經(jīng)度) 百度public static Map<String,String> getAddressByXYByBaiduMap(String lnglat) {// 初始化請求參數(shù)Map<String, String> params = new HashMap<>();// 初始化結(jié)果集Map<String,String> resultMap = new LinkedHashMap<>();// 請求參數(shù)params.put("location", lnglat);params.put("ak", BDMAP_AK);// 發(fā)送請求,返回結(jié)果String resultStr = HttpClientUtils.doGet(reverseGeocodingBdUrl, params, null);JSONObject jsonObject = JSONObject.parseObject(resultStr);if("0".equals(jsonObject.getString("status"))){JSONObject resultObject = JSONObject.parseObject(jsonObject.getString("result"));resultMap.put("address",resultObject.getString("formatted_address")); //resultMap.put("business",resultObject.getString("business")); // 所屬商圈JSONObject addressObject = JSONObject.parseObject(resultObject.getString("addressComponent"));resultMap.put("country",addressObject.getString("country"));resultMap.put("province",addressObject.getString("province"));resultMap.put("city",addressObject.getString("city"));resultMap.put("district",addressObject.getString("district"));resultMap.put("town",addressObject.getString("town"));resultMap.put("street",addressObject.getString("street"));}return resultMap;}/* *************************************************************************************************** */// 高德地圖獲取地址的經(jīng)緯度public static Map<String, String> getXYByGaodeMap(String address) {Map<String, String> xyMap = new HashMap<>();Map<String, String> params = new HashMap<>();params.put("key", GDMAP_KEY);params.put("address", address);// 調(diào)用高德地圖API獲取地址結(jié)果集String result = HttpClientUtils.doGet(gdUrl, params, null);// 將結(jié)果轉(zhuǎn)換,方便取值JSONObject jsonObject = JSONObject.parseObject(result);// status 為1表示請求成功if ("1".equals(jsonObject.getString("status"))) {JSONArray resultArr = JSONArray.parseArray(jsonObject.getString("geocodes")); // 結(jié)果集Map<String, String> resultMap = (Map<String, String>) resultArr.get(0); // 返回是數(shù)組類型,轉(zhuǎn)換String lnglat = resultMap.get("location"); // 獲取經(jīng)緯度// 將經(jīng)緯度存入map中,返回?cái)?shù)據(jù). {"location":"經(jīng)度,緯度"}xyMap.put("longitude", lnglat.split(",")[0]);xyMap.put("latitude", lnglat.split(",")[1]);}xyMap.put("status", jsonObject.getString("status"));return xyMap;}// 根據(jù)經(jīng)緯度返回具體地址.(緯度,經(jīng)度)public static Map<String,String> getAddressByXYByGaodeMap(String lngLat) {// 初始化請求參數(shù)Map<String, String> params = new HashMap<>();// 初始化結(jié)果集Map<String,String> resultMap = new LinkedHashMap<>();// 請求參數(shù)params.put("location", lngLat);params.put("key", GDMAP_KEY);// 發(fā)送請求,返回結(jié)果String resultStr = HttpClientUtils.doGet(reverseGeocodingGdUrl, params, null);JSONObject jsonObject = JSONObject.parseObject(resultStr);if("1".equals(jsonObject.get("status"))){JSONObject resultObject = JSONObject.parseObject(jsonObject.getString("regeocode"));resultMap.put("address",resultObject.getString("formatted_address"));JSONObject addressComponentObject = JSONObject.parseObject(resultObject.getString("addressComponent"));resultMap.put("country",addressComponentObject.getString("country"));resultMap.put("province",addressComponentObject.getString("province"));resultMap.put("city",addressComponentObject.getString("city"));resultMap.put("district",addressComponentObject.getString("district"));resultMap.put("township",addressComponentObject.getString("township"));resultMap.put("building",addressComponentObject.getString("building"));}return resultMap;}
}
總結(jié)
以上是生活随笔為你收集整理的XYUtils —— 获取经纬度工具类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis-generate的使用
- 下一篇: numpy 学习汇总6-统计函数 tcy