CameraPosition с границами с помощью GoogleMap - PullRequest
0 голосов
/ 23 мая 2018

У меня проблемы с использованием 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 голосов
/ 23 мая 2018

Попробуйте:

Сначала получите объект 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, вы можете вносить изменения в положение камеры, как и раньше,но если вы не измените коэффициент масштабирования, камера сохранит старый коэффициент масштабирования, вы просто установите bearing и tilt, как вам нравится.

...