我使用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事件的传单文档描述是"当用户持有一次触摸(也称为长按)时,也会在移动设备上触发。"感觉像是"第二"是永恒的。
有没有一种方法可以使上述功能只在用户持有触摸时触发,但是指定保持的时间量?
答案 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);
现在您可以通过更改变量值来控制抽头延迟。