2

OpenLayers 2“OpenLayers.Control.DragFeature”功能的等价物是什么。我需要在地图上添加一个可以用鼠标移动的图标。下降时,我需要赶上事件。在 OpenLayers 2 中,描述的功能是:

new OpenLayers.Control.DragFeature(this.MarkersLayer, {     
    onComplete: function(feature, pixel) { /* here comes the action after dropping the marker */ }}

有谁知道如何使用 OpenLayers 3 实现这一点?

4

3 回答 3

2

OpenLayers 3 现在包含一个示例,展示如何实现“拖动功能”交互。请参阅http://openlayers.org/en/master/examples/drag-features.html

因此,OpenLayers 3 库仍然没有提供“拖动功能”交互,但它提供了扩展点,使得在应用程序级别实现这种交互成为可能。

请注意,您必须使用 OpenLayers 3 的“master”分支来实现您自己的“拖动功能”交互,如示例中所示。另一种选择是等待 3.1.0,它应该很快就会出来。

于 2014-12-20T23:19:19.727 回答
1

如果有人仍然对这个问题的答案感兴趣,那么下面的代码应该可以达到要求的要求(因为我曾为这类问题苦苦挣扎了一段时间):


// Create the icon feature
var iconFeature = new ol.Feature({
    geometry: new ol.geom.Point([lng, lat])
});

// Set the style for the icon feature 
iconFeature.setStyle(new ol.style.Style({
    image: new ol.style.Icon(({
        anchor: [0.5, 35],
        anchorXUnits: 'fraction',
        anchorYUnits: 'pixels',
        opacity: 1,
        src: markerGraphics
    }))
}));

// Create the vector layer with it's source
var vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [iconFeature]
    })
});

// Drag and drop feature
var dragInteraction = new ol.interaction.Modify({
    features: new ol.Collection([iconFeature]),
    style: null,
    pixelTolerance: 20
});

// Add the event to the drag and drop feature
dragInteraction.on('modifyend',function(){
    callYourFunction();
},iconFeature);

// Add the vector layer and the refering drag and drop interaction
map.addLayer(vectorLayer);
map.addInteraction(dragInteraction);


基于修改事件,可以将侦听器附加到拖放交互而不是图层/图标功能。使用此解决方案,可以在图层/图标的拖动停止后执行功能(类似于 OpenLayers 2 中已知的“dragend”)。

于 2016-03-10T13:49:19.300 回答
0

空无一人。你也不能画圆形和圆形多边形。万岁OL2

于 2014-11-22T14:00:07.940 回答