yondaimehokage
yondaimehokage

Reputation: 253

OL interaction - mousedown

I see that there is ol interaction that can be done upon click or single click or pointer move - however, is there one that can be done with mousedown/mouseup? In short, we want the user to be able to edit a feature as long as the mouse button in clicked but saved/stopped upon mouse button release.

featureRotateDown = new ol.interaction.Select({
        condition: ol.events.condition.pointerdown
    });

    featureRotateUp = new ol.interaction.Select({
        condition: ol.events.condition.pointerup
    });

    map.addInteraction(featureRotateDown);
    map.addInteraction(featureRotateUp);

featureRotateDown.on('select', function(event) {
        $.each(event.selected, function (index, feature) {
            console.log(feature);
            console.log('1');
        });
    });

    featureRotateUp.on('select', function(event) {
        $.each(event.selected, function (index, feature) {
            console.log(feature);
            console.log('3');
        });
    });

In other words, imagine a marker placed on a map that is an arrow. I want to ability to rotate it around as much as I want while the cursor is on the marker and the mouse button is pressed down.

Upvotes: 2

Views: 1294

Answers (1)

Lars
Lars

Reputation: 2485

Try pointerdown and pointerup:

map.on('pointerdown', function (event) {
  // doStuff...
  // ALTERNATIVE 1: get a feature at click position (with very small tolerance)
  map.forEachFeatureAtPixel(event.pixel, function(feature, layer){
    // doStuff with your feature at click position
  });

  // ALTERNATIVE 2: get the closest feature
  closestFeature = yourVectorSource.getClosestFeatureToCoordinate(event.coordinate);
})

map.on('pointerup', function (event) {
  // doStuff...
})

In the functions you can access the features using forEachFeatureAtPixelor getClosestFeatureToCoordinate. Also see this JSFiddle

Upvotes: 1

Related Questions