我在使用ol.interaction.defaults()。extend()时遇到了麻烦。我希望你能帮助我:)。
我在Drag feature example 上重新实施了plunker以进行测试。
var dragInteraction = new ol.interaction.defaults().extend([new app.Drag()]);
var map = new ol.Map({
interactions: dragInteraction,
layers: [
new ol.layer.Tile({
source: new ol.source.TileJSON({
url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
})
}),
layerA,
layerB
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
//map.addInteraction(dragInteraction);
我必须提出问题:
我搜索了OL3-Dev& API文档,但没有找到正确的解决方案。
备注:
求助于你:)
答案 0 :(得分:1)
我想只为layerA(而不是layerB)启用dragInteraction;我怎么能这样做?
您可以随时在地图初始化后使用以下内容添加新的互动:
map.addInteraction(new app.Drag());
我想在创建地图后添加此交互。但是,我尝试,有一个执行错误。我不知道一旦创建了地图,它是否可以将ovveride默认交互?
在拖动互动中,您使用map.forEachFeatureAtPixel
,其中包含参数layerFilter
。您可以像这样使用它:
var layerFilter = function(layer) {
return layer === layerA;
}
var feature = map.forEachFeatureAtPixel(evt.pixel,
function(feature, layer) {
return feature;
}, this, layerFilter, this);
答案 1 :(得分:1)