我在使用CameraPosition时遇到了一些困难,因为我无法进行适当的缩放。 对我来说,适当的缩放是标记和我当前位置之间的距离。 但是,我设法使用CameraUpdateFactory进行了适当的缩放,但是我丢失了所有其他属性(方向(总是向北看)和鸟眼(45度视图))。
我在这之间保持平衡(没有正确的缩放):
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(current_location)
.zoom(mGoogleMap.getCameraPosition().zoom)
.bearing(location.getBearing())
.tilt(birdEyesAngle)
.build();
和这个(右缩放,但缺少其他属性):
CameraUpdateFactory.newLatLngBounds(bounds_between_two_markers, 10);
有没有办法同时拥有正确的变焦和正确的方向/鸟眼?
希望你能提供帮助, 感谢
答案 0 :(得分:1)
试试这个:
首先使用CameraUpdate
方法获取newLatLngBounds
对象:
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds_between_two_markers, 10);
我在onMapReady()
方法中添加了以下代码:
LatLng pos = new LatLng(51.516667, 12.388889);
LatLng pos1 = new LatLng(53.516667, 14.388889);
MarkerOptions markerOptions = setUserMarker(pos);
if(markerOptions != null) {
markerOptions.title(campusLocationName);
mMap.addMarker(markerOptions);
}
LatLngBounds.Builder b = new LatLngBounds.Builder();
b.include(pos);
b.include(pos1);
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(b.build(), 20);
mMap.animateCamera(cu, 10, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
Log.e(TAG, "Start animate onFinish");
CameraPosition cp = new CameraPosition.Builder()
.zoom(mMap.getCameraPosition().zoom)
.target(pos)
.tilt(45.0f)
.bearing(35.0f)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
// mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
}
@Override
public void onCancel() {
Log.e(TAG, "Start animate onCancel");
}
});
我的设备的结果:
使用CancelableCallBack
,您可以像以前一样对摄像机位置进行更改,但如果您不更改缩放系数,摄像机会保留旧的缩放系数,您只需设置bearing
和tilt
如你所愿。