百度座標轉WGS84(即GPS)座標
阿新 • • 發佈:2019-01-10
此座標轉換用的是GPSspg的API,如果您需要轉幾個的話還是線上轉效率比較高;如果量比較大的話,轉換不超過2000次/天,可以用此方法(免費);如果量很大的話,推薦訂閱較高階的套餐。
單個線上轉換:
地址:http://www.gpsspg.com/maps.htm
引數說明:
GPS 座標 / WGS84,適用於谷歌地球 Google Earth。
Google 座標,適用於 Google Maps 地圖模式。
百度座標,適用於百度地圖。
高德座標 / 騰訊座標,適用於高德地圖 / 騰訊地圖。
Mapbar 圖吧座標,適用於圖吧地圖。
以下是批量轉換:
serviceimpl層:
/** * 轉換座標百度座標--->WGS84座標系 */ @Override public Map<String, Object> baiduToGPS(Map<String, Object> mapParam) throws ServiceLocatorException { String convertUrl = "http://api.gpsspg.com/convert/coord/?oid=****&key=*****************&from=2&to=0&latlng="; try { Map map = new HashMap(); List<Map<String, Object>> DemoGPSlist = serviceDemo.selectDemo(map); for (Map<String, Object> BaiduGPSMap : DemoGPSlist) { String id = (String) BaiduGPSMap.get("ID"); String gisX = (String) BaiduGPSMap.get("GIS_X"); String gisY = (String) BaiduGPSMap.get("GIS_Y"); if (StringUtils.isNotBlank(gisY) && StringUtils.isNotBlank(gisX)) { String[] bzb = { gisY, gisX }; String url = convertUrl + StringUtils.join(bzb, ","); String bjson = JoddHttpUtils.postForm_1(url); if (StringUtils.isNotBlank(bjson)) { JSONObject bJSONObject = JSONObject.parseObject(bjson); int status = (int) bJSONObject.get("status"); if (status == 200) { JSONArray result = (JSONArray) bJSONObject.get("result"); if (result != null && result.size() > 0) { JSONObject zbObject = (JSONObject) result.get(0); String x = ""; String y = ""; if (zbObject.get("lng") != null) { x = zbObject.get("lng") + ""; } ; if (zbObject.get("lat") != null) { y = zbObject.get("lat") + ""; } ; if (!"null".equals(x) && !"null".equals(y) && StringUtils.isNotBlank(x) && StringUtils.isNotBlank(y)) { Map updateMap = new HashMap(); updateMap.put("ID", id); updateMap.put("GPSX84", x); updateMap.put("GPSY84", y); iDao.updateDemo(updateMap); } } } } } } } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage()); } return null; }
util類:
package com.demo.util; import java.util.Map; import jodd.http.HttpRequest; import jodd.http.HttpResponse; public class JoddHttpUtils { public static String postForm_1(String URL) { String json=""; try { HttpResponse response = HttpRequest .get(URL) .send(); if (response!=null) { json= response.bodyText(); } } catch (Exception e) { e.printStackTrace(); } return json; } }
serviceimpl層中的這句程式碼中的oid與key參考下圖
http://api.gpsspg.com/convert/coord/?oid=****&key=*****************&from=2&to=0&latlng=
oid和key需要註冊GPSspg賬號才有,from=2&to=0參考以下說明:
API地址:http://www.gpsspg.com/api/convert/latlng/
測試類:
@Test
public void baiduToGPS(){
try {
Demo.baiduToGPS(null);
} catch (Exception e) {
e.printStackTrace();
}
}