另一种可能的实现方法 跳转链接
本文写于2017年09月09日,百度官方文档可能已经更新,总体思路就是通过参数请求百度api,接收并解析api的响应数据。
这个是Web服务端,驾驶导航两点测距的api
百度链接
我写的是java版的测距
核心工具类代码:
public class MeasureUtil {
private final static String DRIVING = "http://api.map.baidu.com/routematrix/v2/driving?output=json&tactics=12&ak=";
public static String getDistance(String appkey, LatLng from, LatLng to)
throws IOException {
StringBuilder result = new StringBuilder();
URL url = new URL(getURL(appkey, from, to));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.connect();
BufferedReader bReader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
String str = null;
while ((str = bReader.readLine()) != null) {
result.append(str);
}
bReader.close();
conn.disconnect();
return result.toString();
}
private static String getURL(String appkey, LatLng from, LatLng to) {
StringBuilder url = new StringBuilder(DRIVING);
url.append(appkey);
if (from != null) {
url.append("&origins=");
url.append(from.getLat()).append(",").append(from.getLng());
}
if (to != null) {
url.append("&destinations=");
url.append(to.getLat()).append(",").append(to.getLng());
}
return url.toString();
}
}
使用方法:
LatLng from = new LatLng();
from.setLat(39.914935);
from.setLng(116.405994);
LatLng to = new LatLng();
to.setLat(39.914492);
to.setLng(116.46636);
System.out.println(MeasureUtil.getDistance(你的秘钥, from, to));
测试结果:(这里我指定返回的是json)
{"status":0,"result":[{"distance":{"text":"6.5公里","value":6461},"duration":{"text":"17分钟","value":1004}}],"message":"成功"}
jar下载地址:https://download.youkuaiyun.com/download/u013271384/9971152
源码下载地址:https://download.youkuaiyun.com/download/u013271384/10385682