这个Control的初始化需要传入一个VectorLayer和一个MousePosition控件,当用户按下Ctrl+V时,自动复制VectorLayer层的第一个选中对象并且将之拷贝到鼠标在地图上的当前位置(从MousePosition获得)
OpenLayers.Control.CopyControl = OpenLayers.Class(OpenLayers.Control, {
initialize: function(vectorLayer, mousePositionCtl) {
this.layer = vectorLayer;
this.mousePositionCtl = mousePositionCtl;
OpenLayers.Control.prototype.initialize.apply(this, arguments);
},
destroy: function() {
if (this.handler) {
this.handler.destroy();
}
this.handler = null;
OpenLayers.Control.prototype.destroy.apply(this, arguments);
},
draw: function() {
this.handler = new OpenLayers.Handler.Keyboard( this, {
"keydown": this.defaultKeyPress }, {
"keyMask": OpenLayers.Handler.MOD_CTRL
});
this.activate();
},
defaultKeyPress: function (evt) {
switch(evt.keyCode) {
case 86:
var vector = this.layer.selectedFeatures[0];
if(vector) {
var lonLat = this.layer.map.getLonLatFromPixel(this.mousePositionCtl.lastXy);
var newVector = vector.clone();
this.layer.addFeatures([newVector]);
newVector.move(lonLat);
}
}
},
CLASS_NAME: "OpenLayers.Control.CopyControl"
});
分享到:
相关推荐
openlayers对矢量图(多边形) 的增删改查,三角形、矩形、五边形,你想几边就几边;添加、删除矢量图,修改矢量图,旋转、平移、拉伸
在OpenLayers中,你可以利用`ImageCanvas`策略来动态加载和渲染矢量元素。这种方法特别适合处理大量或者复杂的矢量数据,因为它们可以在画布上进行本地绘制,从而提高性能。 1. **什么是`ImageCanvas`**: `Image...
在这个主题中,我们将深入探讨如何利用OpenLayers 3在WebGIS中绘制各种特殊的图形,如进攻方向、自由地、分队战斗、弓形、扇形、箭头以及钳击。 1. **进攻方向**:在军事或战略规划中,表示进攻方向是非常重要的。...
openlayers 中利用矢量图层添加注记的示例。
针对目前煤矿类系统软件中图形多数为模拟图展示的现状,介绍了一种基于OpenLayers的GIS图形系统的实现方案。该方案在OpenLayers的基础上进行二次开发,采用HTML+CSS+JavaScript的开发技术组合,在完成常用GIS图形功能的...
在IT行业中,矢量图形裁剪是一个重要的技术领域,特别是在地理信息系统(GIS)和Web地图应用中。这里我们将深入探讨这个主题,重点关注JavaScript中的矢量裁剪、空间分析以及OpenLayers库的应用。 首先,矢量图形是...
OpenLayers 是一个强大的开源JavaScript库,用于在Web浏览器中创建交互式的地图应用。它支持多种数据源,包括WMS、WFS等,并且能够轻松地处理地图图层、控件、事件等。在这个主题中,我们将深入探讨如何利用...
openlayers 2.5 矢量层在ie下闪烁的问题 38 openLayers 在地图上添加一个点并保存 39 openLayers 各个参数的意义 42 geoserver能搞出这种风格的图来吗? 43 关于SLD的线切割后的设置 43 GEOSERVE 标注铁路,使用 SLD ...
OpenLayers提供ol.interaction.Select类,来实现对矢量图层的交互。 也是通过监听地图、窗口事件,触发交互,使对应矢量要素产生动态变化。 ol.interaction.Select概述 ol.interaction.Select类可供设置的属性主要...
在做webgis应用过程中,难免遇到使用多种地图作为底图,比如天地图、谷歌地图、高德地图等,由于各地图使用的坐标系不一致,所以在动态切换底图时,通常需要处理地图容器中已存在的矢量数据,接下来我们以天地图和...
6. 矢量数据:OpenLayers支持动态绘制和编辑矢量图形,如点、线和多边形。`OpenLayers.Layer.Vector`类用于创建矢量图层,`OpenLayers.Geometry`类则提供了几何对象的构建。 7. WFS服务:OpenLayers可以与Web ...
OpenLayers支持多种图层类型,如瓦片图层、图像图层、矢量图层等。你还可以通过图层叠加实现不同数据的展示。例如,添加一个WMS图层: ```javascript var wmsLayer = new ol.layer.Tile({ source: new ol.source....
图层开关控件(ol.control.Layers)是OpenLayers中内置的一个控件,用于管理地图上的图层。它提供了一个用户友好的界面,让用户可以轻松地查看和控制地图上的可见图层。这个控件通常表现为一个侧边栏或者下拉菜单,...
4. **标记与矢量要素**:开发者可以添加自定义的标记和矢量图形,如点、线、面,以及复杂的几何对象,用于标注、分析或可视化数据。 5. **事件处理**:通过监听地图上的点击、移动等事件,可以实现地图交互功能,如...
5. 创建控制:如创建缩放控件`new OpenLayers.Control.Zoom()`,然后添加到地图`map.addControl(control)`。 6. 图层操作:`layer.setVisibility(false)`可以隐藏图层,`layer.setOpacity(0.5)`调整图层透明度。 7...
openlayers 不规则polygon 按一定范围扩大边界,利用turf.js 缓冲区 buffer ,两行代码实现。输入指定半径要素计算缓冲区,支持的单位是英里、公里和度。
例如,添加缩放控制的代码是`map.addControl(new OpenLayers.Control.Zoom())`。 "投影"(Projections)是地理坐标系与屏幕坐标系之间的转换方式。OpenLayers支持多种投影,包括常见的EPSG:4326(纬度/经度)和EPSG...
本书主要内容涵盖:WebGIS开发基础、OpenLayers开发基础、OpenLayers快速入门、OpenLayers之多源数据加载、OpenLayers之图形绘制、OpenLayers之OGC、OpenLayers之高级功能,*后给出了OpenLayers之项目实战――水利...
在OpenLayers 3中,处理地图上的几何对象,如多边形,并进行相交判断,是GIS应用中常见的任务。这个场景通常出现在地理空间分析、地图数据操作或地图交互功能中。OpenLayers 3 提供了一套强大的API,用于创建、操作...
OpenLayers笔记1:加载矢量地图数据的方法以及应对跨域问题的解决方法加载矢量地图数据的两种方法加载本地geojson格式文件出现的跨域问题及解决方法。向geoserver请求WFS服务出现的跨域问题及解决方法。 加载矢量...