Всегда показывать элементы управления масштабированием в MapView

Asked
Viewd13340

17

Есть ли способ всегда отображать элементы управления масштабированием в MapView? Я добавил элементы управления масштабированием с помощью

 map=(MapView)findViewById(R.id.map);
map.setBuiltInZoomControls(true);
 

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

2 ответов

22

Решил эту проблему, поместив мои собственные элементы управления ZoomControl в мой макет xml:

 <ZoomControls android:id="@+id/zoomcontrols"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
 

, а затем настроить onClickListeners для обработки масштабирования:

     zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
    zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mapController.zoomIn();
        }
    });
    zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mapController.zoomOut();
        }
    });
 
15

Решение сложностей работает, но вы теряете встроенную функциональность, когда кнопка отключается при полном увеличении или уменьшении масштаба. Вы можете сохранить эту функциональность, используя вместо этого следующее:

 localMapView.getZoomButtonsController().setAutoDismissed(false);
 

Однако это не позволяет вам размещать элементы управления там, где вы хотите на панели, и, хотя они не исчезают, они не отображаются в первый раз, пока пользователь не коснется экрана один раз. Я попытался вызвать setVisible(true) на контроллере, но по какой-то причине это не сработало.