我想要像雷达屏幕这样的东西,它以用户所在的位置为中心,同时缩放到足以包含 v2 api 的目标点。现在我正在使用
bounds = new LatLngBounds.Builder().include(destPos)
.include(yourPos).build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
但这会在两点之间的某个点居中并缩放以包含两者。有没有像这样简单的方法来做我想做的事?或者我是否必须或多或少地从头开始并做一些数学运算(例如计算两点之间的距离,计算 LatLngBounds 的纬度/经度,以便用户位于定义的矩形的中心并且矩形的边缘包括目的地——考虑到 map /屏幕尺寸)?
这是我所拥有的:
这是我想要的:
您自己的答案过于复杂。
您需要计算位置另一侧的点并将其包含在 LatLngBounds
中。
LatLng otherSidePos = new LatLng(2 * yourPos.latitude - destPos.latitude, 2 * yourPos.longitude - destPos.longitude);
bounds = new LatLngBounds.Builder().include(destPos)
.include(otherSidePos).build();
map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, padding));
注意:您不想将 50 像素硬编码为填充。它在不同的设备上看起来会有所不同。请改用与密度无关的像素。
我是一名优秀的程序员,十分优秀!