小さなデバイスで動作するように、デバイスのパーセンテージLatLngBounds
に基づいてパディング セットを使用してカメラをアニメーション化しています。width
これは 4 インチ ディスプレイの小型デバイスでも機能しますが、Android 7.0 のマルチウィンドウ モードとそれ以前のマルチウィンドウ モードをサポートするデバイスでは失敗します。ギャラクシー S7。
マルチウィンドウ モードのデバイスで次の例外が発生します。
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
すべてのデバイス幅とマルチウィンドウ モードでパディングを適切に設定するにはどうすればよいですか?