移动相机位置以适应关于标记高度的 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);
我的自定义标记图像看起来像这样(插入标尺以进行比较):
我想将相机移动到适合 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);
它产生如下输出:
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);
我的自定义标记图像看起来像这样(插入标尺以进行比较):