Google Maps API v2 newLatLngBounds 使用百分比填充在 Multi-Window 模式下抛出错误
Google Maps API v2 newLatLngBounds using percentage padding throws error in Multi-Window mode
我正在使用基于设备 width
的 百分比 的填充设置将相机设置为 LatLngBounds
动画,以便它在小型设备上工作.
这甚至适用于具有 4 英寸显示屏的小型设备,但是它在 Android 7.0 中的 multi-window 模式和之前支持 multi-window 模式的设备上失败,例如.盖乐世 S7.
我在多 window 模式下的设备上遇到以下异常:
Fatal Exception: java.lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int, int, int): View size is too small after padding is applied.
这里是可疑代码:
private void animateCamera() {
// ...
// Create bounds from positions
LatLngBounds bounds = latLngBounds(positions);
// Setup camera movement
final int width = getResources().getDisplayMetrics().widthPixels;
final int height = getResources().getDisplayMetrics().heightPixels;
final int padding = (int) (width * 0.40); // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
mMap.animateCamera(cu);
}
如何正确设置 newLatLngBounds
中的填充以在所有设备宽度和多 window 模式下工作?
解决方案是选择宽度和高度之间的最小度量,因为在 Multi-window 模式下,高度可以小于宽度:
private void animateCamera() {
// ...
// Create bounds from positions
LatLngBounds bounds = latLngBounds(positions);
// Setup camera movement
final int width = getResources().getDisplayMetrics().widthPixels;
final int height = getResources().getDisplayMetrics().heightPixels;
final int minMetric = Math.min(width, height);
final int padding = (int) (minMetric * 0.40); // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
mMap.animateCamera(cu);
}
我正在使用基于设备 width
的 百分比 的填充设置将相机设置为 LatLngBounds
动画,以便它在小型设备上工作.
这甚至适用于具有 4 英寸显示屏的小型设备,但是它在 Android 7.0 中的 multi-window 模式和之前支持 multi-window 模式的设备上失败,例如.盖乐世 S7.
我在多 window 模式下的设备上遇到以下异常:
Fatal Exception: java.lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int, int, int): View size is too small after padding is applied.
这里是可疑代码:
private void animateCamera() {
// ...
// Create bounds from positions
LatLngBounds bounds = latLngBounds(positions);
// Setup camera movement
final int width = getResources().getDisplayMetrics().widthPixels;
final int height = getResources().getDisplayMetrics().heightPixels;
final int padding = (int) (width * 0.40); // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
mMap.animateCamera(cu);
}
如何正确设置 newLatLngBounds
中的填充以在所有设备宽度和多 window 模式下工作?
解决方案是选择宽度和高度之间的最小度量,因为在 Multi-window 模式下,高度可以小于宽度:
private void animateCamera() {
// ...
// Create bounds from positions
LatLngBounds bounds = latLngBounds(positions);
// Setup camera movement
final int width = getResources().getDisplayMetrics().widthPixels;
final int height = getResources().getDisplayMetrics().heightPixels;
final int minMetric = Math.min(width, height);
final int padding = (int) (minMetric * 0.40); // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
mMap.animateCamera(cu);
}