(转)Arcgis for Js之GeometryService实现测量距离和面积
http://blog.csdn.net/gisshixisheng/article/details/40540601
距离和面积的测量时GIS常见的功能,在本节,讲述的是通过GeometryService实现测量面积和距离。先看看实现后的效果:

距离 面积
首先,进行配置:
- //identify proxy page to use if the toJson payload to the geometry service is greater than 2000 characters.
- //If this null or not available the project and lengths operation will not work. Otherwise it will do a http post to the proxy.
- esriConfig.defaults.io.proxyUrl = "/proxy";
- esriConfig.defaults.io.alwaysUseProxy = false;
接着,定义GeometryService和绘图工具:
- var gsvc = new GeometryService("http://localhost:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer");
- var measureToolbar = new esri.toolbars.Draw(map);
接下来,绘图结束后将所绘制图形添加到地图上面,并返回测量结果,那么增加measureToolbar的draw-end事件:
- measureToolbar.on("draw-end",showMeasureResults);
- /**
- * 显示测量结果
- * @param evt
- */
- var showPt=null;
- function showMeasureResults(evt){
- measureToolbar.deactivate();
- map.setMapCursor("default");
- var geometry = evt.geometry;
- switch (geometry.type) {
- case "polyline":{
- var length = geometry.paths[0].length;
- showPt = new Point(geometry.paths[0][length-1],map.spatialReference);
- var lengthParams = new LengthsParameters();
- lengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_KILOMETER;
- lengthParams.polylines = [geometry];
- gsvc.lengths(lengthParams);
- break;
- }
- case "polygon":{
- showPt = new Point(geometry.rings[0][0],map.spatialReference);
- var areasAndLengthParams = new AreasAndLengthsParameters();
- areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_KILOMETER;
- areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_SQUARE_KILOMETERS;
- gsvc.simplify([geometry], function(simplifiedGeometries) {
- areasAndLengthParams.polygons = simplifiedGeometries;
- gsvc.areasAndLengths(areasAndLengthParams);
- });
- break;
- }
- }
- var graphic = new Graphic(geometry, getGeometrySymbol(geometry.type));
- map.graphics.add(graphic);
- }
根据geometry的类型,增加GeometryService的lengths-complete或者areas-and-lengths-complete事件:
- gsvc.on("lengths-complete",outputLength);
- function outputLength(evtObj){
- var result = evtObj.result;
- showmeasureInfo(showPt, result.lengths[0].toFixed(3), "千米");
- };
- gsvc.on("areas-and-lengths-complete",outputAreaAndLength);
- function outputAreaAndLength(evtObj){
- var result = evtObj.result;
- showmeasureInfo(showPt, result.areas[0].toFixed(3), "平方千米");
- };
最后,将返回的结果显示在地图上:
- /**
- * 显示测量结果
- * @param showPnt
- * @param data
- * @param unit
- */
- function measureInfo(showPnt,data,unit){
- var measureDiv=$("#measure");
- var isShow = false;
- var screenPnt=map.toScreen(showPnt);
- measureDiv.css("left",screenPnt.x+"px");
- measureDiv.css("top",screenPnt.y+"px");
- measureDiv.css("position","absolute");
- measureDiv.css("height","20px");
- measureDiv.css("display","block");
- isShow = true;
- measureDiv.css("z-index","999");
- if(unit==="千米"){
- measureDiv.css("width","90px");
- }
- else{
- measureDiv.css("width","130px");
- }
- $("#result").html(data+unit);
- $("#infoclose").click(function(){
- map.graphics.clear();
- measureDiv.css("display","none");
- isShow = false;
- });
- map.on("pan-start", function(){
- measureDiv.css("display","none");
- });
- map.on("pan-end", function(panend){
- if(isShow == true){
- screenPnt=map.toScreen(showPnt);
- measureDiv.css("left",screenPnt.x+"px");
- measureDiv.css("top",screenPnt.y+"px");
- measureDiv.css("position","absolute");
- measureDiv.css("height","20px");
- measureDiv.css("display","block");
- }
- });
- map.on("zoom-start", function(){
- measureDiv.css("display","none");
- });
- map.on("zoom-end", function(){
- if(isShow == true){
- screenPnt=map.toScreen(showPnt);
- measureDiv.css("left",screenPnt.x+"px");
- measureDiv.css("top",screenPnt.y+"px");
- measureDiv.css("position","absolute");
- measureDiv.css("height","20px");
- measureDiv.css("display","block");
- }
- });
- };
结果的显示我是通过一个div来显示的,并且做了缩放和地图移动的处理。
(转)Arcgis for Js之GeometryService实现测量距离和面积的更多相关文章
- Arcgis for Js之GeometryService实现测量距离和面积
距离和面积的测量时GIS常见的功能,在本节,讲述的是通过GeometryService实现测量面积和距离.先看看实现后的效果: 距离 ...
- ArcGIS Runtime SDK for WPF之测量距离和面积
bu不多说,上代码 using System.Windows; using ESRI.ArcGIS.Client; using ESRI.ArcGIS.Client.Tasks; using ESRI ...
- OpenLayers测量距离和面积
<!DOCTYPE html> <html> <head> <title>测量距离和面积</title> <meta http-equ ...
- Arcgis for Js之GeometryService实现測量距离和面积
距离和面积的測量时GIS常见的功能.在本节,讲述的是通过GeometryService实现測量面积和距离.先看看实现后的效果: watermark/2/text/aHR0cDovL2Jsb2cuY3N ...
- OpenLayers动态测量距离和面积,并可自定义测量的线样式
全局操作变量 /** * @description 标注弹出框 */ HtmlPopup = null; /** * @description 临时图层类数据源 */ VectorSource = n ...
- CAD图在线Web测量工具代码实现(测量距离、面积、角度等)
CAD如今在各个领域均得到了普遍的应用并大大提高了工程技术人员的工作效率.在桌面端,AutoCAD测量工具已经非常强大:然后在Web端,如何准确.快速的对CAD图在Web进行测量呢? 功能 能Web在 ...
- (转)Arcgis for JS之对象捕捉
http://blog.csdn.net/gisshixisheng/article/details/44098615 在web操作,如绘制或者测量的时候,为了精确,需要捕捉到某一图层的对象,在此,讲 ...
- Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
原文:Arcgis for JS之Cluster聚类分析的实现(基于区域范围的) 咱们书接上文,在上文,实现了基于距离的空间聚类的算法实现,在本文,将继续介绍空间聚类之基于区域范围的实现方式,好了,闲 ...
- Arcgis for JS之Cluster聚类分析的实现
原文:Arcgis for JS之Cluster聚类分析的实现 在做项目的时候,碰见了这样一个问题:给地图上标注点对象,数据是从数据库来 的,包含XY坐标信息的,通过graphic和graphicla ...
随机推荐
- 【Codeforces 1106C】Lunar New Year and Number Division
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 看了下样例解释就懂了... 每次选择最大最小的两个组合 然后加起来.. [代码] import java.io.IOException; im ...
- 【codeforces 767B】The Queue
[题目链接]:http://codeforces.com/contest/767/problem/B [题意] 排队去办护照; 给你n个人何时来的信息; 然后问你应该何时去才能在队伍中等待的时间最短; ...
- Tensorflow MNIST浅层神经网络的解释和答复
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51416540 看到之前的一篇博文:深入 ...
- iOS学习笔记18-CoreData你懂的
一.CoreData介绍 CoreData是iOS5之后新出来的的一个框架, 是对SQLite进行一层封装升级后的一种数据持久化方式. 它提供了对象<-->关系映射的功能,即能够将OC对象 ...
- [cogs736][网络流24题#13]星际转移[网络流,网络判定]
将一个空间站分为天数个点,每次枚举天数,每增加一天就把对应天数的边连上,用网络流判定可行性,即-判断最大流是否不小于k,注意编号不要错位.通过此题,可见一些网络流题目需要用到网络判定方法,但虽然答案具 ...
- ASP原码加密工具介绍
ASP原码加密工具介绍 总是会有非常多方法暴露ASP的原程序.造成数据库的password 路径都能够轻易被其它人搞到,所以对ASP程序实行加密处理是个不错的解决方法.以下来介绍一个工具假设大家感兴趣 ...
- Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法
非oracle db以 sqlserver为样例说明: 我的思路 A :oracle db 生产 B: oracle db 中间机 C: sqlserver db 目的端 A-> B-> ...
- iOS 图像处理 - 图像拼接
解决这个问题:将两个图像拼接在一起 前提:须要加入Framework:CoreGraphics.framework 源代码: - (UIImage *) combine:(UIImage*)leftI ...
- NS3网络仿真(5): 数据包分析
快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在我们生成的xml文件里.是不包括生成的数据包的数据的,在我们的脚本中加入以下的语句: point ...
- BZOJ 2440 中山市选2011 全然平方数 二分答案+容斥原理+莫比乌斯反演
题目大意:求第k个无平方因子数是多少(无视原题干.1也是全然平方数那岂不是一个数也送不出去了? 无平方因子数(square-free number),即质因数分解之后全部质因数的次数都为1的数 首先二 ...