openlayers中的自定制工具栏,包含画点、线、面

先是在projectquantan-master这个项目中有一个EditingPanel这个工具条,也挺好的,功能挺全的,但是有一点就是只有画多边形的一个按钮,没有point和path俩个的,所以就想自己去加一个。

然后就发现统一的drawfeature的样式(olControlDrawFeatureItemInactive),没有分为point、path和polygon的,然后就去源代码中找控制这个样式点代码去修改他,但是始终没有找到,只能作罢。

又去网上搜索找到了openlayers自带的一个control(new OpenLayers.Control.EditingToolbar(vector_layer),这个上面有四个按钮,point、path、polygon和pan,还好,正打算用它和之前的editingpanel一起做一个东西呢,

发现了这个  var controls = [

new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Polygon, {‘displayClass‘: ‘olControlDrawFeaturePolygon‘}),

new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Path, {‘displayClass‘: ‘olControlDrawFeaturePath‘}),

new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Point, {‘displayClass‘: ‘olControlDrawFeaturePoint‘})

];就是后面的class可以自己加,

就尝试着在EditingPanel中加一个同样的,没想到就成功了。真是踏破铁鞋无觅处啊。最后代码:

 1  1 /**
 2  2  * Provide a custom editing panel for editing a vec layer.
 3  3  * Not meant to be general purpose.
 4  4  */
 5  5 var EditingPanel = OpenLayers.Class(OpenLayers.Control.Panel, {
 6  6
 7  7     initialize: function(layer) {
 8  8
 9  9         OpenLayers.Control.Panel.prototype.initialize.apply(this, [{}]);
10 10
11 11         var navigate = new OpenLayers.Control.Navigation({
12 12             title: "Pan Map"
13 13         });
14 14
15 15
16 16         var drawFeaturePoint = new OpenLayers.Control.DrawFeature(
17 17             layer, OpenLayers.Handler.Point, {
18 18                 title: "画点",
19 19                 handlerOptions: {multi: true},
20 20                 displayClass: ‘olControlDrawFeaturePoint‘
21 21             }
22 22         );
23 23
24 24         var drawFeaturePath= new OpenLayers.Control.DrawFeature(
25 25             layer, OpenLayers.Handler.Path, {
26 26                 title: "画线",
27 27                 handlerOptions: {multi: true},
28 28                 displayClass: ‘olControlDrawFeaturePath‘
29 29             }
30 30         );
31 31         var drawFeaturePolygon = new OpenLayers.Control.DrawFeature(
32 32             layer, OpenLayers.Handler.Polygon, {
33 33                 title: "画多边形",
34 34                 handlerOptions: {multi: true},
35 35                 displayClass: ‘olControlDrawFeaturePolygon‘
36 36             }
37 37         );
38 38
39 39         var edit = new OpenLayers.Control.ModifyFeature(layer, {
40 40             title: "修改要素"
41 41         });
42 42
43 43         var del = new DeleteFeature(layer, {title: "删除要素"});
44 44
45 45         var save = new OpenLayers.Control.Button({
46 46             title: "保存更改",
47 47             trigger: function() {
48 48                 if(edit.feature) {
49 49                     edit.selectControl.unselectAll();
50 50                 }
51 51                 // fails if no save strategy
52 52                 var strat = OpenLayers.Array.filter(
53 53                     layer.strategies,
54 54                     function(s) {
55 55                         return s instanceof OpenLayers.Strategy.Save;
56 56                     }
57 57                 )[0];
58 58                 strat.save();
59 59             },
60 60             displayClass: "olControlSaveFeatures"
61 61         });
62 62
63 63         this.defaultControl = navigate;
64 64         //this.addControls([save, del, edit,drawFeaturePoint,drawFeaturePath,drawFeaturePolygon, navigate]);
65 65         this.addControls([navigate,drawFeaturePoint,drawFeaturePath,drawFeaturePolygon, edit, del,save]);
66 66
67 67     },
68 68
69 69     CLASS_NAME: "EditingPanel"
70 70 });

上面一个简略的问题解决的流程,只要有耐心问题自会得到解决的。千万不要自己放弃,打心底里相信问题能够得到解决。

要相信只要去坚持,问题总会解决,当然坚持不是盲目的坚持,不断的寻找解决问题的方法,问题总能在不经意间得到完美的解决。只是有时候过程有点慢吧,不过刚开始没经验嘛,慢一点多积累经验都一样,后来会越来越快的,只能说你对事物的认知在慢慢的加深,问题就会慢慢得到来解决。

时间: 2024-10-30 01:39:04

openlayers中的自定制工具栏,包含画点、线、面的相关文章

从零开始学ios开发(十二):Table Views(中)UITableViewCell定制

我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imageView.textLabel.detailTextLabel等属性,但是很多时候这些默认的属性并不能满足需要,其实更多的时候我们想自己制定UITableViewCell的内容,这篇学习的就是制定自己的UITableViewCell. UITableViewCell继承自UIView,因此它可以加载

OpenLayers中的图层

OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLayers中的每个图层都是独立的,对一个的操作不会影响到另外一个. 不管地图应用的目的是什么,一个有用的地图至少需要有一个图层,至少一个基底图层.其他基底图层之上的图层称之为叠加图层.基底图层和叠加图层是OpenLayers中的两种图层类型. 基底图层 基底图层在图层列表的最下方,其他图层都在其之上.

eclipse定制工具栏,修改工具栏

目前eclipse定制工具栏的入口就是window- customize perspective,在弹出的窗口中选择Tool Bar Visibility,选择要在工具栏中显示的快捷图标.注:在Tool Bar Visibility中有些无法选择,可以先在Command Groups Availability选项卡中先选中,再在Tool Bar Visibility中选择.最后点击OK即可. 原文地址:https://www.cnblogs.com/jphoebe/p/9154470.html

OpenLayers自定义投影,转换OpenLayers中加载的OSM的默认投影坐标

giser都会遇到一个问题就是数据与底图坐标系不符合导致偏移的产生. Openlayers中应该只包含EPSG:3857和EPSG:4326,其中EPSG:3857更是作为默认的OSM底图的坐标.(这是根据官方文档以及查到资料,猜的..此处放出官网文档截图) 可是手上的数据是EPSG:4549的呀,,,于是只能辛苦自定义并转换.根据官网所说,如果用proj4.js,那么要加proj4.defs();...算了     不解释了   直接上代码(小声bb,因为作者英语不好,实在是装不了这个X,另外

Openlayers中热力图的实现

概述: 本文讲述结合heatmap.js,在Openlayers中如何实现热力图. heatmap.js简介: Heatmap 是用来呈现一定区域内的统计度量,最常见的网站访问热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示.Heatmap.js 这个 JavaScript 库可以实现各种动态热力图的网页,帮助您研究和可视化用户的行为. 实现效果: 实现代码: <html> <head> <meta charset="UTF-8"

flex中通过sprite在地图上画柱状图主要代码

1.主要代码: var sprite:Sprite = new Sprite();     var columnSys:ColumnSymbol = new ColumnSymbol();     var fieldArr:Array = new Array("绿标总数","黄标总数");     var colorArr:Array = new Array("0x00ff00","0xffff00");     column

多态时最好将基类的析构函数设为virtual、 C++中两个类相互包含引用问题 (转载)

多态:http://blog.csdn.net/tmljs1988/article/details/8146521 C++中两个类相互包含引用问题:http://blog.csdn.net/leo115/article/details/7395077 http://blog.csdn.net/tmljs1988/article/details/6081132

OpenLayers中地图缩放级别的设置方法

来源于:http://www.cnblogs.com/sailheart/archive/2011/03/15/1984519.html 一.概述 在OpenLayers中,地图必须具有一个缩放级别的范围,缩放级别可以用比例尺(scale)或者分辨率(resolution)表示. 比例尺——屏幕上1米代表多少地图坐标单位:分辨率——屏幕上一个像素代表多少地图坐标单位.两者的转换关系是:scale = resolution * 72 * 39.3701(1米=39.3701英寸,1英寸=72像素)

SF :Salesforce中,创建定制对象时,注意的一些地方

Optional Features区域: Allow Reports:此对象的数据,可以用于报表 Allow Activities:使此对象能够将Task和Calendar对象相关联. Track Field History:平台能够自动跟踪此对象相应字段的编辑活动. Deployment Status区域中,选择Deployed. In Development:会对非管理员用户隐藏此对象. Deployed:创建了此对象,只要给定相应的权限,即可做相应的操作. Object Creation