【问题标题】:Reactivate drag control fails in openlayers在 openlayers 中重新激活拖动控制失败
【发布时间】:2013-03-07 16:56:07
【问题描述】:

全部。我有这个小问题,我正在寻求帮助:

首先我有一个包含以下内容的函数:

var point = new OpenLayers.Geometry.Point(imageConfig.XPos, imageConfig.YPos);
var imageFeature = new OpenLayers.Feature.Vector(point);
layers.imageLayer.addFeatures([imageFeature]);

所以在图层上绘制了一个点。在这一层上还有一个 openlayers 拖动控件。它在绘制点后被激活。现在我可以拖动这个点了。像魅力一样工作。

这是用户驱动的逐步过程的一小部分。因此,在拖动完成后,接下来的步骤将对该点进行一些操作。在执行这些其他步骤时,拖动控件被停用。在该过程中,可以在步骤之间跳转,因此需要取消/激活拖动控制。这很好用。

在所有步骤结束时,该点将从图层中移除。这也很好用。

但是:如果我再次调用在图层上绘制点的函数(因为现在它是一个新点)并激活拖动控件,即使我尝试选择该点,我也无法再拖动新点鼠标点击?!

我用 firbug 控制:

  • 功能在那里
  • 特征在右侧层
  • 控制在那里
  • 控件在右侧层
  • 控件已激活

也许我在这里遗漏了一件简单的事情。但是这两天我一直在纠结这个问题,找不到答案。

顺便说一句,我发现在第一步序列中(当一切正常时),控件特性属性设置为点特性。但在第二个没有。在控件拖动处理程序功能属性中也是如此。

我尝试通过以下方式手动设置:

control.feature = imageFeature

和:

control.handler.drag.feature = imageFeature

我正在寻找一个函数来为控件设置新功能。但在 openlayers 文档上找不到任何内容。 其他控件同时不活动(用萤火虫控制)。

但没有运气。没有帮助。为什么这个?我确信这应该有效。站在这里我做错了什么或想念???

感谢每一个帮助。

谢谢

【问题讨论】:

    标签: vector controls openlayers drag


    【解决方案1】:

    我自己想出来的。问题是我使用 geoext 特征存储在网格中显示点。这个网格是用 geoext 特征选择模型配置的。我只是复制了这个... 选择模型还在地图上分配了一个特征选择控件。在第一轮中,这与拖动控件没有冲突,因为它是在之后加载的。

    当工具再次进入第一步时,所有控件都加载到地图中。选择控件和拖动控件已启用。这不能由开放层处理。似乎最后一个映射添加的控件是具有优先级的控件。因此,您可以一次又一次地启用拖动控制。选择控件获胜。

    诀窍是使选择控件失效。然后一切正常。

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多