使用 AngularJS 双击 amMaps 中的地图对象
Double click on a map object in amMaps using AngularJS
我正在开发一个使用 ammap 的应用程序。我根据经度和纬度值在地图上定位了一些点。我使用以下代码实现了单击功能:
map.addListener("clickMapObject", function (event) {
$scope.$apply(function(){
$scope.colorPoints();
$scope.selectedRow = event.mapObject.idBase;
});
});
我想实现双击的功能。谁能告诉我如何在 amMaps 中做到这一点。
从技术上讲,amMap 不支持双击事件。但是,您可以使用 clickMapObject
事件来模拟它。
为此,您需要忽略第一次点击。如果随后的 clickMapObject
发生在 500 毫秒左右,您将其注册为双击。
像这样:
map.addListener( "clickMapObject", function( event ) {
if ( false !== map.clickedObject && map.clickedObject === event.mapObject ) {
// doubleckick
map.clickedObject = false;
$scope.$apply( function() {
$scope.colorPoints();
$scope.selectedRow = event.mapObject.idBase;
} );
} else {
clearTimeout( map.clickedObjectTimeout );
map.clickedObject = event.mapObject;
map.clickedObjectTimeout = setTimeout( function() {
map.clickedObject = false;
}, 500 );
}
} );
我正在开发一个使用 ammap 的应用程序。我根据经度和纬度值在地图上定位了一些点。我使用以下代码实现了单击功能:
map.addListener("clickMapObject", function (event) {
$scope.$apply(function(){
$scope.colorPoints();
$scope.selectedRow = event.mapObject.idBase;
});
});
我想实现双击的功能。谁能告诉我如何在 amMaps 中做到这一点。
从技术上讲,amMap 不支持双击事件。但是,您可以使用 clickMapObject
事件来模拟它。
为此,您需要忽略第一次点击。如果随后的 clickMapObject
发生在 500 毫秒左右,您将其注册为双击。
像这样:
map.addListener( "clickMapObject", function( event ) {
if ( false !== map.clickedObject && map.clickedObject === event.mapObject ) {
// doubleckick
map.clickedObject = false;
$scope.$apply( function() {
$scope.colorPoints();
$scope.selectedRow = event.mapObject.idBase;
} );
} else {
clearTimeout( map.clickedObjectTimeout );
map.clickedObject = event.mapObject;
map.clickedObjectTimeout = setTimeout( function() {
map.clickedObject = false;
}, 500 );
}
} );