地图工具类,简单通俗,Java语言
2018-05-21 17:34
246 查看
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * @author valley * @create 2018 - 05 - 21 14:35 */ public class MapUtil { private static String key="你申请的高德地图的key"; public static String getHttpResponse(String allConfigUrl) { BufferedReader in = null; StringBuffer result = null; try { // url请求中如果有中文,要在接收方用相应字符转码 URI uri = new URI(allConfigUrl); URL url = uri.toURL(); URLConnection connection = url.openConnection(); connection.setRequestProperty("Content-type", "text/html"); connection.setRequestProperty("Accept-Charset", "utf-8"); connection.setRequestProperty("contentType", "utf-8"); connection.connect(); result = new StringBuffer(); // 读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); String line; while ((line = in.readLine()) != null) { result.append(line); } return result.toString(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return null; } /** * 高德地图WebAPI : 驾车路径规划 计算两地之间行驶的距离(米)<br/> * String origins:起始坐标<br/> * String destination:终点坐标 */ public static String distance(String origins, String destination) { int strategy = 0;// 0速度优先(时间)1费用优先(不走收费路段的最快道路)2距离优先 3不走快速路 4躲避拥堵 // 5多策略(同时使用速度优先、费用优先、距离优先三个策略计算路径)。6不走高速 7不走高速且避免收费 // 8躲避收费和拥堵 9不走高速且躲避收费和拥堵 String url = "http://restapi.amap.com/v3/direction/driving?" + "origin=" + origins + "&destination=" + destination + "&strategy=" + strategy + "&extensions=base&key="+key; /*http://restapi.amap.com/v3/geocode/geo?address=郑州市未来路街道金水路226号&key=${key!}*/ JSONObject jsonobject = JSONObject.fromObject(getHttpResponse(url)); JSONArray pathArray = jsonobject.getJSONObject("route").getJSONArray("paths"); String distanceString = pathArray.getJSONObject(0).getString("distance"); return distanceString; } /** * 高德地图WebAPI : 地址转化为高德坐标 <br/> * String address:高德地图地址 * */ public static String coordinate(String address) { try { address = URLEncoder.encode(address, "utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String url = "http://restapi.amap.com/v3/geocode/geo?address=" + address + "&output=json&key="+key; JSONObject jsonobject = JSONObject.fromObject(getHttpResponse(url)); JSONArray pathArray = jsonobject.getJSONArray("geocodes"); String coordinateString = pathArray.getJSONObject(0).getString("location"); return coordinateString; } /** * 高德地图WebAPI : gps坐标转化为高德坐标 <br/> * String coordsys:高德地图坐标 * */ public static String convert(String coordsys) { try { coordsys = URLEncoder.encode(coordsys, "utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String url = "http://restapi.amap.com/v3/assistant/coordinate/convert?locations=" + coordsys + "&coordsys=gps&output=json&key="+key; JSONObject jsonobject = JSONObject.fromObject(getHttpResponse(url)); String coordinateString = jsonobject.getString("locations"); return coordinateString; } public static void main(String[] args) { // 格式: 经度,纬度 // 注意:高德最多取小数点后六位 String origin = "104.043390" + "," + "30.641982"; String destination = "106.655347" + "," + "31.786691"; String address = "未来路街道金水路226号"; String coordinate = coordinate(address); String distance = distance(origin, destination); System.out.println("行驶距离-----" + distance); System.out.println("地址转换高德坐标-----" + coordinate); } /*public static void main(String[] args) { String coordsys = "116.481499,39.990475"; String moordsys =convert(coordsys); System.out.println(moordsys); }*/ }
相关文章推荐
- 使用java代码实现简单的ID自增的工具类
- JAVA实现一个简单的代数运算语言编译器(一)--写在前面
- java简单使用redis的工具类
- java语言实现简单单链表链式储存结构。插入删除等操作。(有个地方看不出错误来,已经标注,望指正)
- Java简单数学运算工具类
- Java语言引入泛型的好处是安全简单
- 简单的入门Android开发和Java语言基础[图]
- java 多线程简单的工具类
- Java FTP简单工具类
- Java基于解释器模式实现定义一种简单的语言功能示例
- Java语言描述MD5加密工具类实例代码
- java语言基础-switch语句的简单使用
- Java版C语言版简单使用静态语言实现动态数组的方法
- java工具类mht转html格式文件 及简单的HTML解析
- Java语言Lang包下常用的工具类介绍
- Java中实现DataTable工具类,并利用其实现简单分页控件。
- Java语言实现简单FTP软件 FTP上传下载队列窗口实现(7)
- Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)
- ZeroMQ 简单的高性能REP-REQ模型,Java语言版本
- 设计模式之简单工厂类(Java语言)