35 lines
1.5 KiB
Java
Raw Normal View History

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("<distance>(.*)</distance>");
/**
* 查询轨迹距离
*
* @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);
}
}