百度地图api,获取两点之间的驾驶距离 java实现
时间: 2024-02-16 18:04:21 浏览: 201
详解js根据百度地图提供经纬度计算两点距离
获取两点之间的驾驶距离可以使用百度地图API中的“驾车路线规划”功能。具体的实现步骤如下:
1. 首先,需要引入百度地图API的Java SDK包,可以在官网下载。
2. 接着,创建一个BaiduMap对象,并调用其“getDirectionService()”方法获取一个DirectionSearch对象,该对象用于进行路线规划。
3. 调用DirectionSearch对象的“setFromLocation()”方法和“setToLocation()”方法设置起点和终点的经纬度坐标,然后调用“search()”方法发送请求。
4. 当接收到响应后,可以从DirectionSearch对象中获取到路线规划结果,包括驾车距离等信息。
下面是一个简单的示例代码:
```
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.direction.DirectionSearch;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
import com.baidu.mapapi.search.route.DrivingRouteResult;
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
import com.baidu.mapapi.search.route.RoutePlanSearch;
public class MapUtils {
private static final String TAG = "MapUtils";
public static void getDrivingDistance(LatLng from, LatLng to, final OnGetDrivingDistanceListener listener) {
SDKInitializer.initialize(App.mContext);
DirectionSearch directionSearch = DirectionSearch.newInstance();
directionSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {
@Override
public void onGetDrivingRoutePlanResult(DrivingRoutePlanOption drivingRoutePlanOption, DrivingRouteResult drivingRouteResult) {
if (drivingRouteResult != null && drivingRouteResult.getRouteLines() != null && drivingRouteResult.getRouteLines().size() > 0) {
int distance = drivingRouteResult.getRouteLines().get(0).getDistance();
if (listener != null) {
listener.onGetDrivingDistance(distance);
}
} else {
if (listener != null) {
listener.onGetDrivingDistance(-1);
}
}
}
@Override
public void onGetTransitRoutePlanResult(...) {}
@Override
public void onGetWalkingRoutePlanResult(...) {}
});
RoutePlanSearch search = RoutePlanSearch.newInstance();
search.drivingSearch(new DrivingRoutePlanOption()
.from(from)
.to(to));
}
public interface OnGetDrivingDistanceListener {
void onGetDrivingDistance(int distance);
}
}
```
在上述代码中,我们首先调用“SDKInitializer.initialize()”方法初始化百度地图SDK,然后创建一个DirectionSearch对象,并设置一个OnGetRoutePlanResultListener监听器,用于接收路线规划的结果。
接着,我们调用“RoutePlanSearch.drivingSearch()”方法发送路线规划请求,其中设置起点和终点的经纬度坐标。
最后,在OnGetRoutePlanResultListener中,我们从DrivingRouteResult对象中获取到驾车距离,并通过OnGetDrivingDistanceListener回调函数将结果返回。
阅读全文