Почему openlayers не обнаруживают сенсорные события на моем ноутбуке? - PullRequest
0 голосов
/ 03 марта 2020

Я занимаюсь разработкой приложения с использованием OpenLayers 6.2.1. Чтобы оптимизировать его для мобильных устройств, я пытаюсь увеличить hitTolerance, когда пользователь касается экрана. Согласно документации, карта должна быть способна обнаруживать события "touchOnly". Однако, когда я выполняю сенсорные взаимодействия на моем ноутбуке с сенсорным экраном, событие не обнаруживается моей функцией, которая реагирует на события касания :

map.on('touchOnly', function() {
    hitTolerance = 5;
    console.log('touch')
});

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

Быстрое редактирование - я использую Google Chrome и не могу получить сенсорные события для записи в журнале, используя следующее:

map.addEventListener("touchstart", function () {
    hitTolerance = 5;
    console.log('touch');
});

Ответы [ 2 ]

1 голос
/ 04 марта 2020

ol / Map не запускает touchOnly, вместо этого используйте singleclick, иначе может обрабатываться другая карта событий, например movestart, см. https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html
. Она обрабатывает события мыши и касания в один раз.

0 голосов
/ 03 марта 2020

Я нашел подходящий обходной путь.

Ранее в своем коде я объявил карту var такой:

var map = new ol.Map({
    target: 'map', 
    view: new ol.View({
        center: [-9099568, 4192168],
        zoom: 3,
        projection: 'EPSG:3857',
    })
});

Целевая "карта" относится к этой части моего HTML:

<body>
    <div id="map" class="map"></div>
</body>

Итак, я смог обнаружить события касания на карте, используя эту строку:

document.getElementById('map').addEventListener('touchstart', function () {
    console.log('touch');
});

По какой-то причине объект карты не может обнаружить касание, но его контейнер может.

...