首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ordnance Survey/Openlayers api拖动标记

使用Ordnance Survey/Openlayers api拖动标记
EN

Stack Overflow用户
提问于 2009-05-19 19:49:36
回答 2查看 5.6K关注 0票数 2

我已经使用美国国家地形测量局(我认为这叫做OpenSpace)生成的基于OpenLayers的应用程序接口创建了一个站点link text。我已经有了它,所以你可以点击地图来添加一个标记,然后我希望能够点击标记并在地图上拖动它。有没有一种简单的方法可以使用OpenSpace或OpenLayers apis来实现这一点。

EN

回答 2

Stack Overflow用户

发布于 2009-07-23 15:49:58

OpenLayers应用编程接口允许您向地图添加标记和要素。如果您添加的是功能而不是标记,则可以通过添加以下代码使其可拖动。

代码语言:javascript
复制
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();

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

代码语言:javascript
复制
vectorLayer.events.register('featuremodified', vectorLayer, function(feature) {
   //custom behavior
});

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

票数 6
EN

Stack Overflow用户

发布于 2011-08-27 01:35:33

更简单的方法是使用openlayer拖动控件,它将一个矢量层作为目标。

假设一个包含图标的矢量层(这比标记更可取,OL的开发人员不鼓励使用),称为向量,你可以简单地这样做:

代码语言:javascript
复制
var drag=new OpenLayers.Control.DragFeature(vectors);

map.addControl(drag);
drag.activate();

使用拖动控件的另一个优点是,您可以挂钩到各种回调,这些回调返回特征和像素位置,如onStart和onDrag。例如,

代码语言:javascript
复制
var drag=new OpenLayers.Control.DragFeature(vectors,{    
     'onDrag':function(feature, pixel){
           console.log(pixel.x);//this can be used to do something else, such as move another feature
     }
});

有关更多详细信息,请参阅http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Control/DragFeature.js

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/884692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档