更改传单保持触摸时间

时间:2017-01-10 17:35:08

标签: javascript google-maps ionic-framework leaflet

我使用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();

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

有没有一种方法可以使上述功能只在用户持有触摸时触发,但是指定保持的时间量?

1 个答案:

答案 0 :(得分:1)

可能很久了。但是我已经搜索了几个小时。我找到了解决方案,可能会对来这里的人有所帮助。

在传单中,触摸在settimeout函数中声明为1000ms的抽头延迟。并且可以对其进行编辑。 在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);

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