使用Ordnance Survey/Openlayers api拖动标记

Chr*_*ris 2 javascript mapping openlayers

我使用由Ordnance Survey(我认为这称为OpenSpace)生成的api 创建了一个站点链接文本,它基于OpenLayers.我已经得到它所以你可以点击地图添加一个标记,然后我想能够点击标记并将其拖动到地图上.有没有一种简单的方法可以使用OpenSpace或OpenLayers apis.

Chr*_*ris 6

OpenLayers api允许您将标记和特征添加到地图中.如果您添加功能而不是标记,则可以通过添加以下代码使其可拖动.

var vectorLayer = new OpenLayers.Layer.Vector("Vector Layer");
var osMap = new OpenSpace.Map('map');
osMap.addLayer(vectorLayer);

var modifyFeaturesControl = new OpenLayers.Control.ModifyFeature(vectorLayer);
modifyFeaturesControl.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
osMap.addControl(modifyFeaturesControl);
modifyFeaturesControl.activate();
Run Code Online (Sandbox Code Playgroud)

这将允许您在地图周围拖动要素.如果要在拖动功能时添加自定义行为,可以在vectorLayer上注册侦听器.例如,要在修改功能(即拖动和释放)时注册侦听器,您需要使用以下代码.

vectorLayer.events.register('featuremodified', vectorLayer, function(feature) {
   //custom behavior
});
Run Code Online (Sandbox Code Playgroud)

有关可以收听的事件的完整列表,请参阅OpenLayers api doc OpenLayers api doc