Двойной тап, чтобы увеличить масштаб фрагмента карты - PullRequest
0 голосов
/ 14 декабря 2018

Я делал это раньше для MapView, и это было довольно просто, потому что были предопределенные методы, такие как onInterceptTouchEvent или GestureListeners и т. Д.

Кто-нибудь пробовал использовать функцию двойного или двойного щелчка в фрагменте карты какЧто ж.Я гуглю, но все еще не могу найти никакого решения.

Я только начал его, добавив только UiSettings getMap().getUiSettings().setZoomGesturesEnabled(true);

Будет ли оно реализовано с помощью setOnMapClickListener() или что-то там естьобработать жест для события двойного касания для фрагмента карты?

ПРИМЕЧАНИЕ. Этот вопрос относится только к MapFragment и не относится к MapView, на который уже есть ответы Двойное касание: увеличение Android MapView?

EDIT MapFragment, который я использовал в макете:

<ViewFlipper
        android:id="@+id/viewFlipper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/noItemsText"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:addStatesFromChildren="true"
        android:background="@android:color/transparent"
        android:gravity="center">

        <ListView
            android:id="@+id/storesListView"
            style="@style/Fill"
            android:background="@android:color/transparent"
            android:cacheColorHint="#00000000" />

        <fragment
            android:id="@+id/mapview"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </ViewFlipper>

Класс - это контроллер, который работает для Activity, которая расширяет Activity, а не AppCompactActivity.

Также я добавил кластеризацию маркеровна карте.

Сторона класса:

public class StoreFinderController extends BeeonicsControllerBase implements OnMapReadyCallback,
    ClusterManager.OnClusterItemInfoWindowClickListener<AllClusterItems>,ClusterManager.OnClusterClickListener<AllClusterItems> {

onMapReady:

@Override
public void onMapReady(GoogleMap googleMap) {

    /*better to work with our map :)*/
    this.googleMap = googleMap;

    mClusterManager = new CustomClusterManager<AllClusterItems>(getActivity(), getMap());
    getMap().setOnCameraIdleListener(mClusterManager);
    getMap().setOnInfoWindowClickListener(mClusterManager);
    getMap().setOnMarkerClickListener(mClusterManager);
    mClusterManager.setOnClusterItemInfoWindowClickListener(this);
    mClusterManager.setOnClusterClickListener(this);

    /*map additional settings*/
    setUpMap();

    //setUpGoogleMap();
    //readItems();
}

А внутри setUpMap я просто передаю некоторые данные между объектами.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

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

Итак, я закончил с предопределенным onMapClickListener(), который вызывает один щелчок карты.Я вставил свое решение ниже:

 getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {
            getMap().animateCamera(CameraUpdateFactory.zoomIn());
        }
    });

В любом случае спасибо Каран Мэр за помощь.

0 голосов
/ 14 декабря 2018

Вы пытались настроить свой слушатель на обратный вызовMapReady ()?и затем установите

mMap.getUiSettings (). setZoomGesturesEnabled (true);

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
 mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                try {


                //   mMap.clear();
                    mMap.getUiSettings().setZoomGesturesEnabled(true);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...