Arcgis for Js之GeometryService实现測量距离和面积
距离和面积的測量时GIS常见的功能。在本节,讲述的是通过GeometryService实现測量面积和距离。先看看实现后的效果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR0lTU2hpWGlTaGVuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
距离 面积
首先,进行配置:
//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 for Js之GeometryService实现测量距离和面积
http://blog.csdn.net/gisshixisheng/article/details/40540601 距离和面积的测量时GIS常见的功能,在本节,讲述的是通过GeometryServ ...
- arcgis for js 之 获取两点之间的距离
换了新公司,接触新行业,半路出家,看着别人的代码,看着api慢慢理解. 需求如下:已知两点坐标求距离. 思路,没有,站在同事的肩膀上踩路子,给的这个链接 https://developers.arcg ...
- arcgis api for javascript 距离与面积量算
在之前的实验中,距离量算跟面积量算一直出问题,费了非常长的时间,各种调式找不到原因. 如今成功完毕.与君共勉 1.距离量算中 lengthParams.polylines = [geom ...
- ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测
一.开篇 在博客注册了三年,今天才决定写第一篇博客,警告自己不要懒!!! 二.关于ArcGIS JS 版本选择 在写这篇博客时ArcGIS JS 4.0正式版已经发布.它和3.x版本的不同是,Map不 ...
- Arcgis for Js之加载wms服务
概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...
- Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
原文:Arcgis for JS之Cluster聚类分析的实现(基于区域范围的) 咱们书接上文,在上文,实现了基于距离的空间聚类的算法实现,在本文,将继续介绍空间聚类之基于区域范围的实现方式,好了,闲 ...
- Arcgis for JS之Cluster聚类分析的实现
原文:Arcgis for JS之Cluster聚类分析的实现 在做项目的时候,碰见了这样一个问题:给地图上标注点对象,数据是从数据库来 的,包含XY坐标信息的,通过graphic和graphicla ...
- Arcgis for js载入天地图
综述:本节讲述的是用Arcgis for js载入天地图的切片资源. 天地图的切片地图能够通过esri.layers.TiledMapServiceLayer来载入.在此将之进行了一定的封装,例如以下 ...
随机推荐
- Mybatis <if>标签
格式:<if test=""> sql语句 </if> <select id="selectByName" resultType= ...
- mongodb安装的两条命令
1. 安装 下载并安装,注意安装方式为custom,路径自定义(d:\chengxu\mongodb),安装成功后在mongodb文件夹下新建data文件夹(内新建db文件夹)和logs文件夹(内新建 ...
- Webbrowser控件判断网页加载完毕的简单方法
一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕.但当加载的网页包含fra ...
- PHP-客户端的IP地址伪造、CDN、反向代理、获取的那些事儿
外界流传的JAVA/PHP服务器端获取客户端IP都是这么取的: 伪代码: 1)ip = request.getHeader("X-FORWARDED-FOR") 可伪造,参 ...
- 【转】ESFramework成熟的C#网络通信框架(跨平台)
原文地址:http://www.cnblogs.com/zhuweisky/archive/2010/08/12/1798211.html ESFramework网络通信框架是一套性能卓越.稳定可靠. ...
- centos 中GTK的安装
centos 中GTK的安装 yum install gtk*
- unity, editable mesh
一,需求 从fbx载入的模型是不可以在unity里编辑的. 我有一人特殊的需求就是想在unity里为mesh的各顶点K动画. 于是需要自己实现一个可编辑(其实只是顶点可以拖动)的mesh. 二,思路 ...
- AngularJS ——ngResource、RESTful APIs 使用
这篇文章里,用以下两个情景用例来解释: 保存/持久化 新的数据对象 更新存在的数据对象 代码片段包含了AngularJs代码和Spring MVC代码,以能够让你简单快速的上手. 想要$resourc ...
- 推荐一个不错的plist拆解工具,untp
需要安装python以及pip 中文说明 A command line tool to split TexturePacker published files. install pip install ...
- Java Web框架play framework的下载与环境变量配置
Web项目的开发有着众多的框架,近期刚刚接触了play. 对于一个Java开发者来说,play是一个不可多得的好框架.以下我简介下怎样下载play .以及play的环境变量配置方法. (1)登录pla ...