回答
首先, ,在你的应用程序中有四个级别的地图,包括你在问题中用圆圈图标提到的矢量图层。
0: "Đường Sá" ||---> Overlay Tiles
1: "Vệ Tinh" ||---> Overlay Tiles
2: "TMS Overlay" ||---> Markers ~ Icons
3: "KML" ||---> Vector
分析: 0开始到最后一个,只是载体似乎是最后一个,其他人保持原样覆盖tiles.In为了来这个问题,我们必须把重点标记层上,即功能(图标)。
正如您在地图上看到的,当您尝试拖动拖动地图时,已触发地图的click
事件。您无法拖动,因为事件注册对标记图层起作用,而不是针对地图。这意味着按顺序拖动地图,点击后必须移动鼠标(拖动)。因为你在矢量图层上试图这样做,所以没有机会将事件传递给覆盖图层。
解决方案:
我建议你两种方法来实现这个错误类型的问题。
Let this be the long way
有一个在已知为SelectFeature从Handler.Feature继承。这通常控制的OpenLayers的控制允许从上点击hover.Which给定层矢量特性意味着该处理程序可以响应与任何绘制的特征相关的鼠标事件。只有回调与特征相关联,需要其中的一个点击。现在我们所要做的就是将点击事件返回到我们平移覆盖图块的位置。
var selectFeat = new OpenLayers.Control.SelectFeature(
vector, {toggle: true, clickout:false});
selectFeat.handlers['feature'].stopDown = false;
selectFeat.handlers['feature'].stopUp = false;
map.addControl(selectFeat);//instance of map
selectFeat.activate();
一旦这个控件被激活,你必须确保你的图层通过另一个layer.To传递事件做到这一点,只需
layer.events.fallThrough = true;//both for vector and marker layers
后,我们所做的所有这些行动至今,留下最后一件事要做: 这是切换标记和kml图层的顺序。
And this should be the easiest way
这就是上layers.You z索引可以高于具有最高ID的层的层的顺序检查有也最高z索引。
layer.setZIndex(...any number...);
除了这个解决方案,简单的方法只允许您通过地图,当所有的图标点击一下子功能可能没有很长的路要走失去了拖,所以这是你的选择离开他们后面。
鼠标事件不希望通过svg传播矢量覆盖到下面的图层。
上述解决方案要求所有标记HTML层的Zindex都高于所有Vector SVG层。
下面的CSS提供了潜在的/部分的变通,通过svg元素传播事件,但只有在存在SVG覆盖内没有矢量元素:
/** Hack so mouse events propagate(bubble) through svg elements, but not the
images within svg */
.olLayerDiv svg {
pointer-events: none;
}
.olLayerDiv svg * {
pointer-events: auto;
}
合并上述CSS同时加入下通:对地图,图层和控件中的所有OpenLayers事件对象都成立。
// map events
var map = new OpenLayers.Map(div, { fallThrough:true });
// layer events
var lvec = new OpenLayers.Layer.Vector(....);
lvec.events.fallThrough = true
map.addLayers([lvec])
// all map controls
var ctrl = new OpenLayers.Control.SelectFeature(lvec, {...
fallThrough: true, autoActivate:true });
map.addControl(ctrl)
- 1. Gtk鼠标拖拽实施
- 2. C#:使用鼠标右键拖拽
- 3. jQuery可拖拽/可拖拽
- 4. jQuery UI的拖拽,拖拽父DIV
- 5. 可拖拽的位置在可拖拽
- 6. 什么是`Win32 :: Console`上下文中的鼠标拖拽?
- 7. jQuery可拖拽/可拖拽目标组件
- 8. WPF - 拖拽期间劫持鼠标输入?
- 9. Drag Drag拖拽时添加拖拽
- 10. iOS上的JQ UI可拖拽:启动拖拽处理程序中的拖拽
- 11. TTPhotoViewController - 禁用拖拽
- 12. 可拖拽的元素在拖拽的页面中拖动
- 13. jQuery可拖拽+可拖拽 - 物理移动拖拽项目到被拖拽的容器
- 14. 有什么方法可以用鼠标拖拽/调整画布的大小?
- 15. 鼠标拖放
- 16. 拖拽UIButtons
- 17. 拖拽textview
- 18. jquery拖拽框
- 19. 元件拖拽
- 20. 拖拽事件
- 21. 使用Ordnance Survey/Openlayers API拖动标记
- 22. Jquery拖放 - 无法拖拽
- 23. SWTBot拖动鼠标
- 24. 鼠标拖动未返回鼠标
- 25. jQuery动态拖拽
- 26. 使用jQuery UI可拖动,如何将鼠标悬停在可拖拽对象上时使用回调函数?
- 27. 图形32:用鼠标拖动,用鼠标滚轮缩放到鼠标光标
- 28. QGraphicsWidget的鼠标拖动。
- 29. 可可:如何在拖拽时变形拖拽图像
- 30. 可以点击jQuery可拖拽父开始拖拽?
非常感谢!它工作正常... – KimKha 2010-11-09 07:57:33
回答了我的问题呢!必须稍微修改一下,但是非常有帮助,谢谢! – Jared 2010-11-10 17:43:53
真棒伙计!谢谢 !!!! – 2012-09-28 18:15:37