package com.lvjing.util; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Service; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; /** * \* Created with IntelliJ IDEA. * \* User: 46512 * \* Author:ZY * \* Date: 2018/7/24 * \* To change this template use File | Settings | File Templates. * \* Description: * \ */ @Service public class GPSTranslate { // key,須要在騰訊地圖申請一個KEY private static final String KEY = ""; /** * @Description: 經過經緯度獲取位置 * @Param: [log, lat] * @return: java.lang.String * @Author: zy * @Date: 2018/7/24 */ public static Map<String, Object> getLocation(String lng, String lat) { Map<String, Object> resultMap = new HashMap<String, Object>(); // 參數解釋:lng:經度,lat:維度。KEY:騰訊地圖key String urlString = "http://apis.map.qq.com/ws/coord/v1/translate?locations=" + lat + "," + lng +"&type=1"+"&key=" + KEY ; String result = ""; try { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); // 騰訊地圖使用GET conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; // 獲取地址解析結果 while ((line = in.readLine()) != null) { result += line + "\n"; //System.out.println(result); } in.close(); } catch (Exception e) { e.getMessage(); } // 轉JSON格式 JSONObject jsonObject = JSONObject.fromObject(result); //System.out.println(jsonObject); // 獲取地址(行政區劃信息) 包含有國籍,省份,城市 JSONObject a = new JSONObject(); //String code = jsonObject.getString("locations"); String locations = jsonObject.get("locations").toString(); //System.out.println(locations); JSONArray jsonArray = jsonObject.getJSONArray("locations"); //System.out.println(jsonArray.getJSONObject(0).get("lat")); String lat_result = jsonArray.getJSONObject(0).get("lat").toString(); String lng_result = jsonArray.getJSONObject(0).get("lng").toString(); resultMap.put("lat", lat_result); resultMap.put("lng", lng_result); return resultMap; } public static void main(String[] args) { // 測試 String lat = "30.287574000";//維度 String lng = "120.07875200";//經度 Map<String, Object> map = getLocation(lng, lat); System.out.println(map); System.out.println("la:" + map.get("lat")); System.out.println("lo:" + map.get("lng")); } }