使用 GoogleMap 的带边界的 CameraPosition
CameraPosition with bounds using GoogleMap
我在使用 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);
有什么方法既能正确缩放又能正确 orientation/bird-eye 吗?
希望你能帮上忙,
谢谢
试试这个:
首先使用newLatLngBounds
方法获取CameraUpdate
对象:
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
随心所欲。
我在使用 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);
有什么方法既能正确缩放又能正确 orientation/bird-eye 吗?
希望你能帮上忙, 谢谢
试试这个:
首先使用newLatLngBounds
方法获取CameraUpdate
对象:
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
随心所欲。