移动相机位置以适应关于标记高度的 LatLngBounds

Move camera position to fit LatLngBounds with regard to marker height

我想将相机移动到适合 LatLngBounds 标记高度的位置。到目前为止,我可以使用以下代码来匹配标记的锚点:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markerList) {
    builder.include(marker.getPosition());
}
LatLngBounds bounds = builder.build();

int padding = getActivity().getResources().getDimensionPixelSize(R.dimen.home_map_padding); // offset from edges of the map in pixels
cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding);
mGoogleMap.animateCamera(cameraUpdate);

它产生如下输出: 如您所见,底部是空的 space(这是 int padding)。 我希望填充像这样相等:

我认为没有任何方法可以获取标记的高度,除非您使用的是自定义标记。但是,如果标记保持相同大小,您可以将相机视图向上滚动一定量。

您将不得不尝试一下要滚动多少,但是一旦您获得该值,您就可以在必要时根据屏幕密度对其进行缩放。

您的问题与此处发布的问题类似:

Defining a CameraUpdate with LatLngBounds with different padding values

解决方案是将实际 GoogleMap 的顶部填充设置为标记图标的高度。

像这样可以做到:

Drawable drawable = <YOUR DRAWABLE HERE>;
final int padding = drawable.getIntrinsicHeight();
map.setPadding(0, padding, 0, 0);

我的自定义标记图像看起来像这样(插入标尺以进行比较):