当地图准备就绪时,调用onMapReady(GoogleMap googleMap)
方法,在此方法showMapDetails(pickUp, dest)
内执行,两个标记将添加到地图中,并且相机位置应该与填充内部的标记相匹配。不幸的是,指定的填充对地图的相机位置没有影响,即使logcat显示其值为100" Log.i("padding", padding+"");
"
private void showMapDetails(LatLng pickUp, LatLng dest) {
BitmapDescriptor pickUpMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_marker);
mGoogleMap.addMarker(new MarkerOptions().position(pickUp).icon(pickUpMarker));
BitmapDescriptor destMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_end_marker);
mGoogleMap.addMarker(new MarkerOptions().position(dest).icon(destMarker));
mGoogleMap.animateCamera(createTravelCameraPosition(pickUp, dest));
}
private CameraUpdate createTravelCameraPosition(LatLng pickUp, LatLng dest) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(pickUp);
builder.include(dest);
builder.build();
float dpi = getResources().getDisplayMetrics().density;
float dp = getResources().getDimension(R.dimen.latlng_bounds_mdpi_padding);
int padding = (int) (dp*dpi);
Log.i("padding", padding+"");
return CameraUpdateFactory.newLatLngBounds(builder.build(), padding);
}
答案 0 :(得分:0)
基于[CameraUpdateFactory.newLatLngBounds](https://developers.google.com/android/reference/com/google/android/gms/maps/CameraUpdateFactory.html#newLatLngBounds(com.google.android.gms.maps.model.LatLngBounds,int))说明
在地图经过布局之前,请勿使用此相机更新更改相机(为了使此方法正确确定合适的边界框和缩放级别,地图必须具有大小)。否则将抛出IllegalStateException。地图可用是不够的(即getMap()返回一个非空对象);包含地图的视图也必须经过布局,以确定其尺寸。如果您无法确定是否已发生这种情况,请改用newLatLngBounds(LatLngBounds,int,int,int)并手动提供地图的尺寸。
它建议您可以使用重写方法提供尺寸和填充,如果您不确定它是否被触发。