1.JS高德支持
一、引入高德js支持
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&key=你申请的key值&plugin=AMap.Geocoder"></script>
key值之后的内容是其他的子支持,我需要做逆地理编码,需要用到Geocoder,
二、设置容器
新建个div作为地图的展示位置
<div id="container" style="margin-left:30px; 700px;height: 400px"></div>
三、初始化地图,同时给地图加点击事件
var map = new AMap.Map('container', { resizeEnable: true, //是否监控地图容器尺寸变化 zoom: 14, //初始化地图层级 center: [113.668377, 34.719974] //初始化地图中心点 }); map.on('click', function(ev) { // 触发事件的对象 var target = ev.target; // 触发事件的地理坐标,AMap.LngLat 类型 var lnglat = ev.lnglat; // 触发事件的像素坐标,AMap.Pixel 类型 var pixel = ev.pixel; // 触发事件类型 var type = ev.type; var lnglat2 = [ev.lnglat.getLng(),ev.lnglat.getLat()]; //点击点坐标 showInfoClick(lnglat2);//地图点击触发的事件 });
逆地理编码:把经纬度转换成位置名称
function showInfoClick(lnglat2) { var geocoder = new AMap.Geocoder({ radius: 1000, extensions: "all" }); geocoder.getAddress(lnglat2, function(status, result) { if (status === 'complete' && result.info === 'OK') { console.dir(result); var address = result.regeocode.formattedAddress; $("#address").val(address);//位置名称 } }); }
2.js调用高德地图显示轨迹:集成高德地图实现路线轨迹绘制
3.java调用高德接口测量两点间的距离
一,首先我们需要准备个工具方法发送http请求
//java发送http请求 private static String getResponse(String serverUrl){ try { URL url = new URL(serverUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); // 设置该连接是可以输出的 connection.setRequestMethod("GET"); // 设置请求方式 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); String line = null; StringBuilder result = new StringBuilder(); while ((line = br.readLine()) != null) { // 读取数据 result.append(line + " "); } connection.disconnect(); return result.toString();//返回值 } catch (IOException e) { e.printStackTrace(); return ""; } }
二:去高德申请个web端的key值
三:通过起始点的经纬度和结束点的经纬度获取距离
官网文档:https://lbs.amap.com/api/webservice/guide/api/direction
//获取两点间的距离 public static String getDistance(String startLonLat, String endLonLat){ String key = "你申请的key"; //返回起始地startAddr与目的地endAddr之间的距离,单位:米 String result = ""; String queryUrl = "https://restapi.amap.com/v3/distance?origins="+startLonLat+"&destination="+endLonLat+"&output=xml&key="+key; try { String queryResult = getResponse(queryUrl); //截取距离长度结果值 String str = queryResult.substring(queryResult.indexOf("<distance>")+10,queryResult.indexOf("</distance>")); return str; } catch (Exception e) { e.printStackTrace(); return ""; } }
这里我用了一个比较蠢的方式去截取我要的距离长度,各位有什么好办法欢迎留言