另一种可能的实现方法 跳转链接
本文写于09月09日,百度官方文档可能已经更新,总体思路就是通过参数请求百度api,接收并解析api的响应数据。
这个是Web服务端,驾驶导航两点测距的api
百度链接
我写的是java版的测距
核心工具类代码:
public class MeasureUtil {private final static String DRIVING = "http://api./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下载地址:/download/u013271384/9971152
源码下载地址:/download/u013271384/10385682