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 });
上面一个简略的问题解决的流程,只要有耐心问题自会得到解决的。千万不要自己放弃,打心底里相信问题能够得到解决。
要相信只要去坚持,问题总会解决,当然坚持不是盲目的坚持,不断的寻找解决问题的方法,问题总能在不经意间得到完美的解决。只是有时候过程有点慢吧,不过刚开始没经验嘛,慢一点多积累经验都一样,后来会越来越快的,只能说你对事物的认知在慢慢的加深,问题就会慢慢得到来解决。
openlayers中的自定制工具栏,包含画点、线、面的更多相关文章
- OpenLayers中的图层
OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...
- OpenLayers中的球面墨卡托投影
最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...
- OpenLayers中的图层(转载)
作者:田念明出处:http://www.cnblogs.com/nianming/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法 ...
- openlayers中单击获取要素
openlayers中单击获取要素 分类专栏: GIS 总结 OpenLayers 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- eclipse定制工具栏,修改工具栏
目前eclipse定制工具栏的入口就是window- customize perspective,在弹出的窗口中选择Tool Bar Visibility,选择要在工具栏中显示的快捷图标.注:在Too ...
- 参考bootstrap中的popover.js的css画消息弹框
前段时间小颖的大学同学给小颖发了一张截图,图片类似下面这张图: 小颖当时大概的给她说了下,其实小颖也不知道上面那个三角形怎么画嘻嘻,给她说了DOM结构,具体的css让她自己百度,今天小颖自己参考boo ...
- OpenLayers中地图缩放级别的设置方法
来源于:http://www.cnblogs.com/sailheart/archive/2011/03/15/1984519.html 一.概述 在OpenLayers中,地图必须具有一个缩放级别的 ...
- OpenLayers中的Layer概念和实践--Openlayers调用WMS服务
整理转自:http://hi.baidu.com/lixuweiok/item/c406a4e6a6d390e7fa42ba4b 本章我认为是这本书的真正开端,终于开始讲一些有意思的东西了.. 在这一 ...
- android中实现在ImageView上随意画线涂鸦
我实现的思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完 ...
随机推荐
- Mongodb定时备份脚本和清除脚本
Mongodb用的是可以热备份的mongodump和对应恢复的mongorestore,在linux下面使用shell脚本写的定时备份,代码如下 1.定时备份 #!/bin/bash sourcepa ...
- 100行代码搞定抖音短视频App,终于可以和美女合唱了。
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...
- mongodb配置文件与启动
数据库配置文件 mongo.cnf #日志文件位置 logpath=/data/db/journal/mongodb.log (这些都是可以自定义修改的) # 以追加方式写入日志 logappend= ...
- 另一个C#模拟post请求的例子
private string returninstallTmnl(AddTmnlInstallParameter model) { string url = ConfigurationSettings ...
- 总结—angularjs项目
我毕业了-------有点期待生活,又点害怕生活. 总结下最近一个月做的这个项目,项目的开发形式也比较新颖,采用的是前后端分离的形式.我负责前端的管理系统开发,另一个哥们负责利用ABP创建接口,整合后 ...
- Vue指令(四)--v-model
1.v-model的使用场景 1.v-model的使用,用于表单控件的数据绑定 2.v-model与value共同使用,实现选项框的选中事件,两者相同时,选中 3.v-model 与v-bind:va ...
- django常用封装
#encoding:utf-8from django.shortcuts import render_to_responseimport hashlibfrom binascii import b2a ...
- Spring学习笔记:面向切面编程AOP(Aspect Oriented Programming)
一.面向切面编程AOP 目标:让我们可以“专心做事”,避免繁杂重复的功能编码 原理:将复杂的需求分解出不同方面,将公共功能集中解决 *****所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现 ...
- CommandLineRunner预加载数据
在使用SpringBoot构建项目时,我们通常有一些预先数据的加载.那么SpringBoot提供了一个简单的方式来实现–CommandLineRunner. CommandLineRunner是一个接 ...
- C为什么不能跨平台
如果大家能对我的文章推荐一下,关注一下本人博客,那就更开心了,我今后也会更多的写一些计算机系统/原理类的文章,以飨各位读者.再次谢谢.前段时间看了 周志明的那本 <深入理解java虚拟机> ...