arcgis api for javascript 自定义工具栏总结
来源:互联网 发布:电子教室软件解锁 编辑:程序博客网 时间:2024/06/05 00:36
效果示例:
工具栏功能包括:拉框放大、拉框缩小、漫游、全图、复位、拉框查询、属性查询、测量工具、清除选择、比例尺、鹰眼。
一方面使用api自带的封装好的功能,比如
//工具栏 var navToolbar = new Navigation(map); $("#zoomoutbox").click(function() { navToolbar.activate(Navigation.ZOOM_OUT); }) $("#zoominbox").click(function() { navToolbar.activate(Navigation.ZOOM_IN); }) $("#panbtn").click(function() { navToolbar.activate(Navigation.PAN); navToolbar.deactivate(); }) $("#fullbtn").click(function () { map.centerAndZoom(new Point(116.473,40.071),1); }); $("#movebtn").click(function() { navToolbar.deactivate(); reset(); })
另一方面,需要自己实现,比如拉框查询,首先需要定义Draw绘图工具,绑定绘图事件,当绘图完成时得到一个geometry对象,该对象即为查询的范围,触发回调函数,在回调函数中使用QueryTask来进行空间查询。
需要注意的是,这样查询出来的结果是一个新的要素集,在显示高亮的时候,如果本来就已经在地图上存在显示的样式,高亮的样式就会叠加在原来的样式上。那如果要替换原来的样式怎么办?
有一种办法,就是得到draw以后的geometry后,拿这个geometry的范围来判断待查询的要素是否在这个范围内,如果在就替换它的要素,效果就是这样的:
//TODO 拉框查询 var toolBar = new Draw(map); var selectedGraphics = new Array(); //存放选择过的元素 on(dom.byId("drawbtn"), "click", function (e) { clickStatus=clickType.DRAW; //修改鼠标状态为draw resetSelectedSymbol(); map.disableMapNavigation(); toolBar.activate(Draw.RECTANGLE); }); //拉框结束 进行查询 on(toolBar,"draw-end", function(result) { var geometry = result.geometry; map.enableMapNavigation(); toolBar.deactivate(); geometryContains(geometry,selectedlayer); });/** * 判断geometry是否包含layer中的要素 * @param geometry */ function geometryContains(geometry,layer) { var graphics = layer.graphics; if(graphics.length==0){ alert("无要素可被选择!") return; } for(var i= 0, total=graphics.length;i<total;i++){ if(geometry.contains(graphics[i].geometry)){ graphics[i].setSymbol(xiaoquSelectedSymbol); } } if(selectedGraphics.length==0){ alert("未选中目标"); return; } }
关于测量工具已经在上篇文章中说到了,这里就不重复说了。
比例尺:
var scalebar = new esri.dijit.Scalebar({ map: map, scalebarUnit: "metric" },dom.byId("scalebar"));
鹰眼:
var overviewMapDijit = new OverviewMap({ map: map, // 必要的 visible: true, // 初始化可见,默认为false attachTo: "bottom-right", // 默认右下角 width: 250, // 默认值是地图高度的 1/4th height: 150, // 默认值是地图高度的 1/4th opacity: .40, // 透明度 默认0.5 maximizeButton: true, // 最大化,最小化按钮,默认false expandFactor: 10, //概览地图和总览图上显示的程度矩形的大小之间的比例 color: "red" // 默认颜色为#000000 }); overviewMapDijit.startup();
点击工具栏时图片替换:
var toolArr=["../../image/fd_h.png","../../image/sx_h.png","../../image/py_h.png","../../image/qt_h.png","../../image/my_h.png","../../image/xz_h.png","../../image/searchText1.png","../../image/clh.png","../../image/cdh.png","../../image/mjh.png","../../image/qc1.png","../../image/blc_h.png","../../image/yy_h.png"]; var toolArr2=["../../image/fd_l.png","../../image/sx_l.png","../../image/py_l.png","../../image/qt_l.png","../../image/my_l.png","../../image/xz_l.png","../../image/searchText2.png","../../image/lll.png","../../image/cdl.png","../../image/mjl.png","../../image/qc2.png","../../image/blc_l.png","../../image/yy_l.png"]; var toolbox = document.getElementById('maptoolbox'); var toolimg = toolbox.getElementsByTagName('img'); var t2; for (var i = 0; i < toolimg.length; i++) { toolimg[i].index =i; toolimg[i].onclick=function (){ for (var i = 0; i < toolimg.length; i++) { toolimg[i].src = toolArr[toolimg[i].index]; } this.src = toolArr2[this.index]; t2=this.src; }; };
阅读全文
0 0
- arcgis api for javascript 自定义工具栏总结
- ArcGIS API for JavaScript
- ArcGIS JavaScript API开发的地图-工具栏
- Arcgis Server for JavaScript API之自定义InfoWindow
- Arcgis Server for JavaScript API之自定义InfoWindow
- Arcgis Server for JavaScript API之自定义InfoWindow
- arcgis api for JavaScript相关
- arcgis api for JavaScript相关
- ArcGIS API for Javascript热区图
- ArcGIS API for Javascript介绍
- ArcGIS API for JavaScript是什么
- ArcGIS API For JavaScript部署
- ArcGIS.Server.9.3和ArcGIS API for JavaScript保存自定义图形
- ArcGIS.Server.9.3和ArcGIS API for JavaScript保存自定义图形(十)
- ArcGIS.Server.9.3和ArcGIS API for JavaScript保存自定义图形(十)
- arcgis api for silverlight自定义一个Symbol
- ArcGIS API for Silverlight 自定义MarkerSymbol
- ArcGIS API for Javascript(中文版!!) 谁有啊。。。。。。。
- 201412-2 Z字形扫描
- 假设银行Bank已经有了按整年year计算利息的一般方法,其中year只能取正整数。如: Double computerInterest() { Interest=year*0.35*saveMon
- 线程笔记2--线程的通信(生产者与消费者案例分析)
- 小问题2
- 继承
- arcgis api for javascript 自定义工具栏总结
- centos7系统下挂载磁盘
- 数据结构第十周项目2--用二叉树求解代数表达式
- 机器学习数学|Taylor展开式与拟牛顿
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础006--flink分布式部署001
- Javascript中带参数的构造函数的执行过程
- 讲大家讲下切图
- 51nod 1536 不一样的猜数游戏 (找规律+素数筛)
- 6.3