2024-03-25 15:13:09 +08:00

45 lines
2.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.zhgd.xmgl.util;
import cn.hutool.core.convert.Convert;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import lombok.extern.slf4j.Slf4j;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
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 单位km
*/
public static Double getDistance(String orig, String dest, String mid, Integer style) {
String key = "000c3ade82b69dee54ac334e750cfac0";
String url = "http://api.tianditu.gov.cn/drive?type=search&tk=" + key;
//String url = "http://api.tianditu.gov.cn/drive?postStr={\"orig\":\"116.35506,39.92277\",\"dest\":\"116.39751,39.90854\",\"mid\":\"116.36506,39.91277;116.37506,39.92077\",\"style\":\"0\"}&type=search&tk=000c3ade82b69dee54ac334e750cfac0";
log.info("查询轨迹距离:url:{}", url);
String rs = HttpRequest.post(url)
.header(Header.USER_AGENT, "PostmanRuntime/7.37.0")//头信息,多个头信息多次调用此方法即可
.form("postStr", "{\"orig\":\"" + orig + "\",\"dest\":\"" + dest + "\",\"mid\":\"" + mid + "\",\"style\":\"" + style + "\"}")
.timeout(20000)//超时,毫秒
.execute().body();
log.info("查询轨迹距离:rs:{}", rs);
Matcher matcher = pattern.matcher(rs);
matcher.find();
return Convert.toDouble(matcher.group(1));
}
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);
}
}