我正在编写一个应用程序,使用OpenLayers,使用户可以将文件拖放到预定义的功能上,并通过AJAX将这些功能发送到服务器。这些文件本身是来自地球物理设备的原始数据,服务器将通过光栅图层呈现它们。
我已经实现了地图的拖放功能:
var mapelem = $id("map");
mapelem.addEventListener("dragover", FileDragHover, false);
mapelem.addEventListener("dragleave", FileDragHover, false);
mapelem.addEventListener("drop", FileSelectHandler, false);
我已经使用以下代码实现了鼠标悬停高亮:
var sf = new OpenLayers.Control.SelectFeature(boxes, {
hover: true,
multiple: false,
highlightOnly: true
});
map.addControl(sf);
sf.activate();
其余的代码主要是Boxes Example - Vector。
问题在于将文件拖到地图画布上时,OpenLayers悬停选择不再起作用,我希望它能够给用户反馈以确保他们将文件放置在预期位置。我可以获得画布上光标的位置:
map.events.register("mousemove", map, function(e) {
lonlat = map.getLonLatFromPixel(e.xy);
});
所以在那个函数中,我可能可以进行点对要素的测试,但能够使用现有功能会更好。
有没有办法将拖动消息传播到我的OpenLayers图层?