YMaps3 js api: перемещение позиции карты на touch устройствах двумя пальцами

Как не пробовал только на этой версии реализовать хоть что-то более менее похожее на управление картой только двумя пальцами на ymaps3. И через touch events и пытался найти информацию по этому поводу (как просто и в доке ymaps3 так и на других форумах но глухо)

Мой пример использования:

const initDoubleTouchMove = (mapInstance) => {
    let isTwoFingers = false;

    const behaviors = {
        static: [...mapInstance.behaviors, 'drag'],
        move: mapInstance.behaviors.filter(behavior => behavior !== 'drag')
    }

    mapInstance.container.addEventListener('touchstart', function(e) {
        console.log('dd');
        if (e.touches.length === 2) {
            isTwoFingers = true;
        } else {
            isTwoFingers = false;
        }
    });

    mapInstance.container.addEventListener('touchmove', function(e) {
        if (isTwoFingers) {
            setBehaviorActivity(mapInstance, behaviors);
        } else {
            setBehaviorActivity(mapInstance, behaviors, false);
        }
    });

    mapInstance.container.addEventListener('touchend', function(e) {
        setBehaviorActivity(mapInstance, behaviors);
    });

    setBehaviorActivity(mapInstance, behaviors);
}

const setBehaviorActivity = (mapInstance, behaivorArrays, isStatic = true) => {
    if (isStatic) {
        mapInstance.setBehaviors(behaivorArrays.static); 
    } else {
        mapInstance.setBehaviors(behaivorArrays.move); 
    }
}

const mainInit = async (mountElement) => {
    const mapInstance = await initMap({
        //   controls: ["geoControls", "zoomControls"],
        mountElement: mountElement,
        location: {
            center: [ 33.55, 33.55], /* координаты для примера*/
            zoom: 10,
        },
        points: [/* здесь должы были быть координаты меток для примера */],
        behaviors: [
            // "mouseRotate",
            // "mouseTilt",
            // "magnifier",
            // "pinchRotate",
            // "panTilt",
            "drag"
        ],
    });

    window.mapInstance = mapInstance;
    initDoubleTouchMove(mapInstance);
}

let mapMountElement = document.querySelector("#some-element-id");
if (mapMountElement) {
    mainInit(mapMountElement);
}

Функция initMap(); моя обертка над этим api возвращающая instance карт

Во всяком случае при отключении drag на карте и если она во весь экран вы оказываетесь в ловушке и не можете крутить не вверх не вниз

Кто-нибудь это реализовывал?


Ответы (0 шт):