Исправить уровень масштабирования между двумя маркерами в Google-карте


В настоящее время я работаю с Google-Map-v2 и хочу показать направление между двумя маркерами. Все в порядке, и направление между двумя маркерами вычисляется и рисуется отлично.Но остается только одна проблема.

Проблема в том, что уровень масштабирования между этими двумя маркерами в Google-карте слишком велик. Я ищу в SO и нахожу решение для изменения уровня масштабирования следующим кодом:

 LatLngBounds.Builder builder = new LatLngBounds.Builder();
    builder.include(origin);
    builder.include(dest);
    LatLngBounds bounds = builder.build();

    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 50);
    mMap.animateCamera(cu);

Теперь это лучше, но все еще уровень масштабирования не очень хорош. Можно ли это сделать? исправления в коде ? ( если я могу, то некоторая прокладка для просмотра исправлена)

Я также изменяю 50 на 6,12,... Но ничего не изменилось.

2 2

2 ответа:

Вы используете правильный код, и значение (50) должно быть увеличено, если вы хотите уменьшить масштаб (быть внешним) или уменьшено до 0, если вы хотите быть в самой маленькой области, содержащей два маркера (вы можете пропустить значение в случае).

Если вы задаете значение 150 или больше, а уровень слишком велик, вы можете использовать обратный вызов анимации для уменьшения масштаба после " latlng" масштаб:

Https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#animateCamera(com.google.android.gms.maps.CameraUpdatecom.гугл.андроид.СБМ.карты.Расчет.CancelableCallback)

LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(origin);
builder.include(dest);
LatLngBounds bounds = builder.build();

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 50);
mMap.animateCamera(cu, new GoogleMap.CancelableCallback(){
    void onCancel(){}
    void onFinish(){
        CameraUpdate zout = CameraUpdateFactory.zoomBy(-3.0);
        mMap.animateCamera(zout);
    }
});

Это должно увеличить до latLng, а когда закончите, увеличьте назад на 3 уровня.

Попробуйте это:

 CameraPosition cameraPosition =
                                    new CameraPosition.Builder()
                                            .target(yourlatlng)
                                           // .bearing(targetBearing)// you can ignore it
                                            .zoom(12)// your zoom value
                                                    // .tilt(40)  // angle of view
                                            .build();


                            mMap.animateCamera(
                                    CameraUpdateFactory.newCameraPosition(cameraPosition),
                                    500,
                                    null);