Как постоянно применять ограничения LatLng

У меня есть переменная LatLngBounds на моей карте Google:

LatLngBounds QC = new LatLngBounds(
      new LatLng(14.656669, 120.998598), new LatLng(14.666965, 121.098934));

Я хочу, чтобы камера показывала только конкретный город. Я реализовал, что он не может сильно уменьшаться, просто увеличивайте масштаб.

map.setOnCameraChangeListener(new OnCameraChangeListener() {

            @Override
            public void onCameraChange(CameraPosition arg0) {

                // adding marker

                if(arg0.zoom <12){

                    map.animateCamera(CameraUpdateFactory.newLatLngZoom(QC.getCenter(), 12));
                }

            }
        });

Однако, если я не изменю уровень масштабирования ниже 12, я все равно смогу перейти к другим странам на карте. Любые идеи о том, как применить камеру в LatLngBounds? Пожалуйста помоги! Спасибо!


person Jeongbebs    schedule 18.11.2013    source источник


Ответы (1)


Вы можете проверить цель в CameraPosition arg0. Сохраните последний известный CameraPosition, а затем: используйте QC.contains(arg0.target), чтобы увидеть, находится ли цель в границах. если не. установить камеру на предыдущую CameraPosition. Надеюсь это поможет.

person user2558461    schedule 18.11.2013
comment
я попробовал это LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds; // adding marker if(arg0.zoom <12){ map.animateCamera(CameraUpdateFactory.newLatLngZoom(QC.getCenter(), 12)); } if(bounds.getCenter() != QC.getCenter()){ map.animateCamera(CameraUpdateFactory.newLatLngZoom(QC.getCenter(), 12)); }, но с этим я больше не могу увеличивать масштаб. Любые идеи? - person Jeongbebs; 18.11.2013
comment
Что вы сделали в своем коде: если пользователь перемещается, вернитесь в положение по умолчанию и масштабируйте. вы не разрешаете никаких элементов управления. - person user2558461; 18.11.2013
comment
Можете ли вы дать мне представление, как это сделать? - person Jeongbebs; 18.11.2013
comment
Я сделал это if(QC.contains(arg0.target)){ } else map.animateCamera(CameraUpdateFactory.newLatLngZoom(QC.getCenter(), 12)); Я могу просто увеличить масштаб, просто увеличить масштаб. Я не могу перейти к другим частям внутри latlngbounds - person Jeongbebs; 18.11.2013