根据标记高度移动摄像机位置以适合LatLngBounds

时间:2015-03-02 15:25:27

标签: android google-maps-markers google-maps-android-api-2 google-maps-api-2

我想将相机移动到适合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);

它产生如下输出: my output so far 如您所见,底部有空白区域(这是int padding)。 我想让填充像这样:

enter image description here

2 个答案:

答案 0 :(得分:4)

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

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);

使用我的自定义标记图像(为比较插入标尺)看起来像这样:

enter image description here

答案 1 :(得分:0)

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

你需要玩一下滚动多少但是一旦你得到了值,你可以根据屏幕密度进行缩放。