我不写代码,我只是代码的搬运工。

public class GaoDeMapUtil {private final static Logger logger = LoggerFactory.getLogger(GaoDeMapUtil.class);//高德地图key值private static final String key = "";public static void main(String[] args) {// lat 31.2990170 纬度// log 121.3466440 经度String add = GaoDeMapUtil.getCity("116.407394", "39.904211");logger.info("最后结果-->" + add);}/*** 阿里云api 根据经纬度获取地址** @param log* @param lat* @return*/public static String getAdd(String log, String lat) {StringBuffer s = new StringBuffer();s.append("key=").append(key).append("&location=").append(log).append(",").append(lat);String res = sendPost("http://restapi.amap.com/v3/geocode/regeo", s.toString());logger.info(res);JSONObject jsonObject = JSONObject.fromObject(res);JSONObject jsonObject1 = JSONObject.fromObject(jsonObject.get("regeocode"));logger.info("jsonObject1-->" + jsonObject1);Map<String, Object> resultMap = new HashMap<String, Object>();resultMap.put("addressComponent", jsonObject1.get("addressComponent"));System.out.println("addressComponent--->"+resultMap.get("addressComponent"));JSONObject jsonObject2 = JSONObject.fromObject(jsonObject1.get("addressComponent"));System.out.println("province--->"+jsonObject2.get("province"));String add = jsonObject1.get("formatted_address").toString();return add;}/*** 阿里云api 根据经纬度获取所在城市** @param log* @param lat* @return*/public static String getCity(String log, String lat) {// log 大 lat 小// 参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)String urlString = "http://gc.ditu.aliyun.com/regeocoding?l=" + lat + "," + log + "&type=010";String res = "";try {URL url = new URL(urlString);java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection();conn.setDoOutput(true);conn.setRequestMethod("POST");java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {res += line + "\n";}in.close();JSONObject jsonObject = JSONObject.fromObject(res);JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("addrList"));JSONObject j_2 = JSONObject.fromObject(jsonArray.get(0));String allAdd = j_2.getString("admName");String arr[] = allAdd.split(",");res = arr[1];} catch (Exception e) {logger.info("error in wapaction,and e is " + e.getMessage());}logger.info(res);return res;}/*** 高德api 根据地址获取经纬度** @param name* @return*/public static String getLatAndLogByName(String name) {StringBuffer s = new StringBuffer();s.append("key=" + key + "&address=" + name);String res = sendPost("http://restapi.amap.com/v3/geocode/geo", s.toString());logger.info(res);JSONObject jsonObject = JSONObject.fromObject(res);JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("geocodes"));JSONObject location = (JSONObject) jsonArray.get(0);String add = location.get("location").toString();return add;}/*** 高德api 根据地址获取经纬度** @param name* @return*/public static String getAddByAMAP(String log, String lat) {StringBuffer s = new StringBuffer();s.append("key=").append(key).append("&location=").append(log).append(",").append(lat);String res = sendPost("http://restapi.amap.com/v3/geocode/regeo", s.toString());logger.info(res);JSONObject jsonObject = JSONObject.fromObject(res);JSONObject jsonObject1 = JSONObject.fromObject(jsonObject.get("regeocode"));String add = jsonObject1.get("formatted_address").toString();return add;}/*** 高德api 坐标转换---转换至高德经纬度** @param name* @return*/public static String convertLocations(String log, String lat, String type) {StringBuffer s = new StringBuffer();s.append("key=").append(key).append("&locations=").append(log).append(",").append(lat).append("&coordsys=");if (type == null) {s.append("gps");} else {s.append(type);}String res = sendPost("http://restapi.amap.com/v3/assistant/coordinate/convert", s.toString());logger.info(res);JSONObject jsonObject = JSONObject.fromObject(res);String add = jsonObject.get("locations").toString();return add;}public static String getAddByName(String name) {// log 大 lat 小// 参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)String urlString = "http://gc.ditu.aliyun.com/geocoding?a=" + name;String res = "";try {URL url = new URL(urlString);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setDoOutput(true);conn.setRequestMethod("POST");BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {res += line + "\n";}in.close();JSONObject jsonObject = JSONObject.fromObject(res);String lon = jsonObject.getString("lon");String lat = jsonObject.getString("lat");System.err.println(jsonObject);res = getNearbyAdd(lon, lat);} catch (Exception e) {logger.info("error in wapaction,and e is " + e.getMessage());e.printStackTrace();}return res;}public static String getNearbyAdd(String log, String lat) {String add = sendGet("http://ditu.amap.com/service/regeo","longitude=" + log + "&latitude=" + lat + "&type=010");logger.info(add);return add;}/*** 高德api 关键字模糊查询** @param keyWord* @param city* @return*/public static String getKeywordsAddByLbs(String keyWord, String city) {StringBuffer s = new StringBuffer();s.append("key=" + key + "&keywords=");if (keyWord.contains(" ")) {String[] str = keyWord.split(" ");for (int i = 0; i < str.length; i++) {if (i == 0) {s.append(str[i]);} else {s.append("+" + str[i]);}}} else {s.append(keyWord);}s.append("&city=" + city);s.append("offset=10&page=1");String around = sendPost("http://restapi.amap.com/v3/place/text", s.toString());logger.info(around);return around;}/*** 高德api 经纬度/关键字 附近地标建筑及地点查询** @param log* @param lat* @param keyWord* @return*/public static String getAroundAddByLbs(String log, String lat, String keyWord) {String around = sendPost("http://restapi.amap.com/v3/place/around", "key=" + key + "&location=" + log + ","+ lat + "&keywords=" + keyWord + "&radius=2000&offset=10&page=1");logger.info(around);return around;}public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {logger.info(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {logger.info("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求** @param url   发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {logger.info("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** GET请求数据** @param get_url url地址* @param content key=value形式* @return 返回结果* @throws Exception*/public static String sendGetData(String get_url, String content) throws Exception {String result = "";URL getUrl = null;BufferedReader reader = null;String lines = "";HttpURLConnection connection = null;try {if (content != null && !content.equals(""))get_url = get_url + "?" + content;// get_url = get_url + "?" + URLEncoder.encode(content, "utf-8");getUrl = new URL(get_url);connection = (HttpURLConnection) getUrl.openConnection();connection.connect();// 取得输入流,并使用Reader读取reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));// 设置编码while ((lines = reader.readLine()) != null) {result = result + lines;}return result;} catch (Exception e) {throw e;} finally {if (reader != null) {reader.close();reader = null;}connection.disconnect();}}/*** @param POST_URL url地址* @param content  key=value形式* @return 返回结果* @throws Exception*/public static String sendPostData(String POST_URL, String content) throws Exception {HttpURLConnection connection = null;DataOutputStream out = null;BufferedReader reader = null;String line = "";String result = "";try {URL postUrl = new URL(POST_URL);connection = (HttpURLConnection) postUrl.openConnection();connection.setDoOutput(true);connection.setDoInput(true);connection.setRequestMethod("POST");// Post 请求不能使用缓存connection.setUseCaches(false);connection.setInstanceFollowRedirects(true);connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");connection.connect();out = new DataOutputStream(connection.getOutputStream());// content = URLEncoder.encode(content, "utf-8");// DataOutputStream.writeBytes将字符串中的16位的unicode字符�?8位的字符形式写道流里�?out.writeBytes(content);out.flush();out.close();// 获取结果reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));// 设置编码while ((line = reader.readLine()) != null) {result = result + line;}return result;} catch (Exception e) {throw e;} finally {if (out != null) {out.close();out = null;}if (reader != null) {reader.close();reader = null;}connection.disconnect();}}/** 过滤掉html里不安全的标签,不允许用户输入这些标�?*/public static String htmlFilter(String inputString) {// return inputString;String htmlStr = inputString; // 含html标签的字符串String textStr = "";//Pattern p_script;//Matcher m_script;try {String regEx_script = "<[\\s]*?(script|style)[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?(script|style)[\\s]*?>";String regEx_onevent = "on[^\\s]+=\\s*";String regEx_hrefjs = "href=javascript:";String regEx_iframe = "<[\\s]*?(iframe|frameset)[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?(iframe|frameset)"+ "[\\s]*?>";String regEx_link = "<[\\s]*?link[^>]*?/>";htmlStr = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");htmlStr = Pattern.compile(regEx_onevent, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");htmlStr = Pattern.compile(regEx_hrefjs, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");htmlStr = Pattern.compile(regEx_iframe, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");htmlStr = Pattern.compile(regEx_link, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");textStr = htmlStr;} catch (Exception e) {System.err.println("Html2Text: " + e.getMessage());}return textStr;}
}

java 高德地图工具类相关推荐

  1. AmapUtil--高德地图工具类

    工具类 package com.juan.platform.common.util;import com.alibaba.fastjson.JSON; import com.alibaba.fastj ...

  2. Java封装OkHttp3工具类

    点击关注公众号,Java干货及时送达  作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...

  3. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  4. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  5. java时间日期工具类_java日期处理工具类

    java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...

  6. java 日期处理工具类_Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...

  7. java downloadfile_FileDownload.java:文件下载工具类

    FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...

  8. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  9. java基于HuTool工具类ExcelWriter合并单元格

    ** java基于HuTool工具类ExcelWriter合并单元格 ** 1.基于HuTool工具类ExcelWriter合并单元格并且使用 jdk1.8 lambda表达式 效果如下: 用姓名和编 ...

最新文章

  1. 理解__repr__
  2. ITK:计算代码点之间的时间
  3. Windows和Linux双启动,并用在Windows下配置CoLinux启动
  4. 【拔刀吧少年】之Expect 自动化控制和测试 Here Document 免交互
  5. 完美解决tomcat/springboot启动速度相当慢 快死的状态了
  6. java算法的递归问题设计_java算法-递归算法思想
  7. DeathRansom:一款教育目的的Python勒索软件开发平台
  8. Activiti(一)SpringBoot2集成Activiti6
  9. mysql5.7 json特性_【Mysql】Mysql5.7新特性之-json存储
  10. Undelete Plus 2.53
  11. 中澳科学家在量子安全通信领域合作研究取得突破性进展
  12. Tomcat的日志配置
  13. 佳能Canon PIXMA MP630 一体机驱动
  14. java 生成 rtf_java itext生成rtf文档
  15. 学计算机需要什么文具,开学需要准备哪些文具用品
  16. Hdu-5919 Sequence II(主席树在线求区间不同数)
  17. mysql存储表情字符_MySQL 存储表情字符
  18. 小学生html教程,小学.html
  19. 数据脱敏:保障数据安全的脱敏方案
  20. nalu格式annex-B和avcc

热门文章

  1. 「AR裸眼插画」零基础入门级教程来啦
  2. 炉石传说 酒馆战棋 战斗模拟的实现
  3. apicloud 使用教程
  4. 在Python中文件用Feather格式,与 CSV说再见,速度提升 150 倍!
  5. 几款主流浏览器的简单比对实验,360极速最适合我_我是亲民_新浪博客
  6. 数据挖掘-朴素贝叶斯算法的R实现
  7. 余压监控系统在高层住宅楼的应用
  8. java程序员首次使用mac M1
  9. C++新手,用OOP思想编写的推箱子小游戏,请多赐教
  10. 处理文档用计算机配置文件,2017年自学考试计算机应用基础试题