arcgis server开发地图问题—对象的多态性?
来源:互联网 发布:淘宝贷款100万还不上 编辑:程序博客网 时间:2024/05/22 06:51
drawtb = new esri.toolbars.Draw(map);
measuretb=new esri.toolbars.Draw(map); <!-- 绘制图形 --> dojo.connect(drawtb,"onDrawEnd",addToMap); dojo.connect(measuretb,"onDrawEnd",measure); <!-- 将用户绘制的几何对象加入到地图中 --> function addToMap(geometry) { //map.graphics.clear(); 保留前面绘制 var symbol; switch (geometry.type) { case "point": symbol = markerSymbol; break; case "polyline": symbol = lineSymbol; break; case "polygon": symbol = fillSymbol; break; } var graphic = new esri.Graphic(geometry, symbol); map.graphics.add(graphic); } <!-- 将用户绘制的线和面进行量测加入到地图中 -->
function measure(geometry) {map.graphics.clear(); if(geometry.type=="polyline"){var lengthParams = new esri.tasks.LengthsParameters(); map.graphics.clear(); //将图形添加到地图中 lengthParams.polylines = [geometry]; lengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_METER; lengthParams.geodesic = true; geometryService.lengths(lengthParams);//调用几何服务的函数处理 var graphic = map.graphics.add(new esri.Graphic(geometry, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2)));} else{ var graphic = map.graphics.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol())); map.graphics.clear(); var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters(); areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_FOOT; areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_ACRES; geometryService.simplify([geometry], function(simplifiedGeometries) { areasAndLengthParams.polygons = simplifiedGeometries; geometryService.areasAndLengths(areasAndLengthParams); });} }
...
<div id="draw" dojoType="dijit.form.DropDownButton" data-dojo-props="iconClass:'drawIcon'" > <!-- <span>图形绘制</span> --> <div dojoType="dijit.Menu"> <div dojoType="dijit.MenuItem" label="点" ><script type="dojo/method" event="onClick" args="evt"> drawtb.activate(esri.toolbars.Draw.POINT); </script></div> <div dojoType="dijit.MenuItem" label="线" ><script type="dojo/method" event="onClick" args="evt"> drawtb.activate(esri.toolbars.Draw.POLYLINE); </script></div> <div dojoType="dijit.MenuItem" label="面" ><script type="dojo/method" event="onClick" args="evt"> drawtb.activate(esri.toolbars.Draw.POLYGON); </script></div><div dojoType="dijit.MenuItem" label="返回漫游状态"><script type="dojo/method" event="onClick" args="evt"> //返回标准drawtb.deactivate(); navToolbar.activate(esri.toolbars.Navigation.PAN); </script></div> <div dojoType="dijit.MenuItem" label="清除"><script type="dojo/method" event="onClick" args="evt"> map.graphics.clear(); //返回标准drawtb.deactivate(); </script></div> </div> </div> <div dojoType="dijit.Tooltip" connectId="draw" showDelay="0" label="图形绘制" position="below"></div> <div id="measure" dojoType="dijit.form.DropDownButton" data-dojo-props="iconClass:'measureIcon'" > <!-- <span>量测</span> --> <div dojoType="dijit.Menu"> <div dojoType="dijit.MenuItem" label="距离"><script type="dojo/method" event="onClick" args="evt"> measuretb.activate(esri.toolbars.Draw.FREEHAND_POLYLINE); dojo.connect(geometryService, "onLengthsComplete", function(result){dojo.byId("distance").innerHTML = dojo.number.format(result.lengths[0] / 1000) + " 千米"; dijit.byId("distancedialog").show(); }); </script></div> <div dojoType="dijit.MenuItem" label="面积" ><script type="dojo/method" event="onClick" args="evt"> measuretb.activate(esri.toolbars.Draw.FREEHAND_POLYGON); dojo.connect(geometryService, "onAreasAndLengthsComplete", function(result){dojo.byId("area").innerHTML = result.areas[0].toFixed(3) + " acres"; dojo.byId("length").innerHTML = result.lengths[0].toFixed(3) + " feet"; dijit.byId("areadialog").show(); }); </script></div><div dojoType="dijit.MenuItem" label="返回漫游状态"><script type="dojo/method" event="onClick" args="evt"> //返回标准measuretb.deactivate(); navToolbar.activate(esri.toolbars.Navigation.PAN); </script></div> <div dojoType="dijit.MenuItem" label="清除"><script type="dojo/method" event="onClick" args="evt"> map.graphics.clear(); //返回标准 measuretb.deactivate(); </script></div> </div> </div> <div dojoType="dijit.Tooltip" connectId="measure" showDelay="0" label="量测(请耐心等待结果)" position="below"></div>
一直想把用户绘制图形功能和用户绘制线和面的量测功能分开,开始的时候发现定义一个drawtb总是不行,两个功能之间相互出现逻辑错误,然后定义又定义了measuretb,这两个都是new esri.toolbars.Draw(map)对象,我认为是对象的多态性,根据不同的选择对象在dojo.connect(drawtb,"onDrawEnd",addToMap);和dojo.connect(measuretb,"onDrawEnd",measure)选择了不同的调用方法。希望有人能详细解释一下!
- arcgis server开发地图问题—对象的多态性?
- ArcGIS Server ADF开发:地图配置:美丽的新疆地图
- ArcGIS Server ADF开发:地图配置:美丽的新疆地图
- ArcGIS Server ADF开发:使用影像地图
- ArcGIS Server 地图服务无法预览问题
- 多态性——对象的多态性
- ARCGIS SERVER 地图服务空白的解决方案
- ARCGIS Server加载地图
- ArcGIS JavaScript API开发的地图—实现Toc
- ArcGIS JavaScript API开发的地图—重新布局
- ArcGIS Server发布移动地图服务(mobile data access)时的问题
- 手机调用ArcGIS Server发布的Rest地图服务不显示问题
- 面向对象语言的多态性问题
- ArcGIS JavaScript API开发的地图
- ArcGIS JavaScript API开发的地图-工具栏
- android 基于Arcgis开发的地图
- linux版ArcGIS Server地图服务发布问题
- osgearth使用arcgis地图服务的问题
- java小动画——带有背景音乐
- Why bother learning about link?(Chapter 7)
- 又怀念贝尚
- Fedora捷径-在线安装软件
- 3分钟搞定iOS下拉刷新的详细介绍
- arcgis server开发地图问题—对象的多态性?
- linux中普通文件和块设备文件的区别
- Javascript Date 常用处理函数
- 博弈类题目小结(HDU,POJ,ZOJ)
- char型数据存储成Int(16进制值相互转换)
- 歪理邪说解析架构设计师上午考试试题之六(分析2010下半年系统架构设计师上午试题26-30题)
- Python_Linux(RedHat,Centos)上scrapy详尽安装笔记
- java基础--9
- Myeclipse 10 for mac 安装过程及myeclipse 10 for mac 破解版下载