【问题标题】:Change the leaflet hold touch timing更改传单保持触摸时间
【发布时间】:2017-01-10 17:35:07
【问题描述】:

我正在将 Leaflet 用于使用 Ionic 开发的移动应用程序。我目前有一个功能,可以在您单击地图时搜索指定位置附近的某些项目

$rootScope.map.on('click', function(e) {
        if (APP_STATUS == ACTION_SEARCH) {
            positionClick = e.latlng;
            $scope.positionSearchClose = positionClick;
            $scope.userPosition.setLatLng(positionClick);
            $scope.popupSearchRoutesClosed = $ionicPopup.show({
                template: $scope.getTemplate(),
                title: 'Buscando rutas',
                scope: $scope,
            });
            $scope.getRoutesClose(positionClick, ACTION_SEARCH);
        }
    });
    $scope.addButtons();

我想更改此设置,以便在用户短暂按住触摸时进行搜索。我将 'click' 参数更改为 'contextmenu' 并实现了我想要的,但我发现保持时间太长了。尽管 ContextMenu 事件的传单文档描述是“当用户按住单次触摸一秒钟(也称为长按)时也会在移动设备上触发”。感觉“第二”就是永恒。

有没有办法让上面的函数只在用户按住触摸时触发,但指定按住的时间?

【问题讨论】:

    标签: javascript google-maps ionic-framework leaflet


    【解决方案1】:

    可能很长一段时间。但我一直在寻找这个几个小时。我找到了解决方案,这可能对任何来这里的人都有帮助。

    在传单中,触摸点击延迟在 settimeout 函数中声明为 1000 毫秒。并且它们可以被编辑。 在leaflet.js 中找到以下代码:

    // simulate long hold but setting a timeout
    this._holdTimeout = setTimeout(bind(function () {
        if (this._isTapValid()) {
            this._fireClick = false;
            this._onUp();
            this._simulateEvent('contextmenu', first);
        }
    }, this), 1000);
    

    现在这里声明的 1000(1 秒)是计时器,您可以将 1000 更改为您喜欢的任何值...例如 300 或 500。

    如果您想动态更改触摸保持(点击)计时器, 在leaflet.js 开头创建一个变量

    var contextMenuTime = 1000;
    

    并在js函数中手动应用变量

        ...
        this._simulateEvent('contextmenu', first);
        }
    }, this), contextMenuTime);
    

    现在您可以通过更改变量值来控制点击延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多