js高德地图支持,java获取高德地图两点间的距离

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  "";
        }
    }

这里我用了一个比较蠢的方式去截取我要的距离长度,各位有什么好办法欢迎留言

 
原文地址:https://www.cnblogs.com/wl1202/p/13432287.html