Openlayers 3 Interaction.Default位于特定矢量层上,并在贴图已初始化后添加

Openlayers 3 Interaction.Default位于特定矢量层上,并在贴图已初始化后添加,openlayers-3,Openlayers 3,我在ol.interaction.defaults().extend()方面遇到了麻烦。我希望你能帮助我:) 我在for测试上重新实现了 var dragInteraction = new ol.interaction.defaults().extend([new app.Drag()]); var map = new ol.Map({ interactions: dragInteraction, layers: [ new ol.layer.Tile({ sour

我在ol.interaction.defaults().extend()方面遇到了麻烦。我希望你能帮助我:)

我在for测试上重新实现了

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);
我必须解决以下问题:

  • 我只想为图层启用绘图交互(而不是 层b);我该怎么做
  • 我想在之后添加这个交互 地图已经创建。但是如果我尝试的话,就会有一场死刑 错误。我不知道一旦创建了地图,是否可以对默认交互进行ovveride
  • 我搜索了OL3开发和API文档,但没有找到正确的解决方案

    注:

    • 我必须在变量中保留单独的向量层
    • 为了更好的架构设计,我真的很想在之后添加交互
    • 我的目标是检索dragget覆盖/特征的坐标
    谢谢你的帮助:)

    我只想为layerA(而不是layerB)启用绘图交互;我该怎么做

    在地图初始化后,您始终可以使用以下工具添加新的交互:

    map.addInteraction(new app.Drag());
    
    我想在创建地图之后添加此交互。但是我尝试了一下,有一个执行错误。我不知道一旦创建了地图,是否可以对默认交互进行ovveride

    在您正在使用的拖动交互中,它接受一个参数
    layerFilter
    。您可以这样使用它:

    var layerFilter = function(layer) {
      return layer === layerA;
    }
    
    var feature = map.forEachFeatureAtPixel(evt.pixel,
        function(feature, layer) {
          return feature;
        }, this, layerFilter, this);
    

    喜欢上面的建议。为图层命名,实现图层过滤器,并在创建地图后添加交互

    我举了你的例子


    问候

    谢谢你的分叉示例!:)(我不能提高投票权,我知道,我没有足够的声誉,我会在可能的时候提高投票权!)