需求
每次车辆状态改变时(相当于一个定时任务)将需要显示的marker覆盖物+自己当前位置显示在屏幕范围内
官方文档中提供的API
MapStatusUpdateFactory的静态方法(用于更新地图状态)
// 设置显示在屏幕中的地图地理范围
static MapStatusUpdate newLatLngBounds(LatLngBounds bounds)
// 设置显示在规定宽高中的地图地理范围
static MapStatusUpdate newLatLngBounds(LatLngBounds bounds,int width,int height)
LatLngBounds.Builder中提供的实例方法(用于创建LatLngBounds对象)
// 创建地理范围对象
LatLngBounds build()
// 让该地理范围包含一个地理位置坐标
LatLngBounds.Builder include(LatLng point)
思路
利用已有API:1,将需要显示的位置点都include到LatLngBounds中;2,更新地图状态(设置显示在屏幕中的地图地理范围)
/**
* 设置显示在屏幕中的地理范围
*/
private void zoomToSpan() {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
// 需要显示的marker点
for (MarkerInfo info : mMarkerInfos) {
builder.include(new LatLng(info.getWD(), info.getJD()));
}
// 我的当前位置
builder.include(new LatLng(l.getLatitude(), l.getLongitude()));
LatLngBounds bounds = builder.build();
// 设置显示在屏幕中的地图地理范围
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds, mv_statetrasition_map.getWidth(), mv_statetrasition_map.getHeight());
mBaiduMap.setMapStatus(u);
}