package com.zhgd.xmgl.util; import cn.hutool.core.convert.Convert; import cn.hutool.http.HttpUtil; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TiandituUtil { static Pattern pattern = Pattern.compile("(.*)"); /** * 查询轨迹距离 * * @param orig string 起点经纬度 是 -180,-90,180,90。 * @param dest string 终点经纬度 是 -180,-90,180,90。 * @param mid 途径点经纬度字符串 否 途径点字符串格式:116.35506,39.92277;116.35506,39.92277两个坐标之间以分号隔开,坐标xy之间用逗号隔开(都是半角)。 * @param style 导航路线类型 默认0 (0:最快路线,1:最短路线,2:避开高速,3:步行) 0-3。 * @return */ public static Double getDistance(String orig, String dest, String mid, Integer style) { String key = "000c3ade82b69dee54ac334e750cfac0"; String url = "http://api.tianditu.gov.cn/drive?postStr={\"orig\":\"" + orig + "\",\"dest\":\"" + dest + "\",\"mid\":\"" + mid + "\",\"style\":\"" + style + "\"}&type=search&tk=" + key; String rs = HttpUtil.get(url); Matcher matcher = pattern.matcher(rs); matcher.find(); return Convert.toDouble(matcher.group(0)); } public static void main(String[] args) { Double distance = getDistance("116.35506,39.92277", "116.40332,39.90025", "116.35506,39.92277;116.35506,39.92277", 0); System.out.println(distance); } }