带有界限的CameraPosition使用GoogleMap

时间:2018-05-23 14:31:09

标签: android google-maps zoom marker bounds

我在使用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);

有没有办法同时拥有正确的变焦和正确的方向/鸟眼?

希望你能提供帮助, 感谢

1 个答案:

答案 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");
            }
        });

我的设备的结果:

enter image description here

使用CancelableCallBack,您可以像以前一样对摄像机位置进行更改,但如果您不更改缩放系数,摄像机会保留旧的缩放系数,您只需设置bearingtilt如你所愿。