ArcGIS API for JavaScript 距离和面积测量示例
"该资源是一个基于arcgis api for js实现的距离测量和面积测量的JavaScript示例代码,提供了用户界面和地图交互功能,如平移、拉框放大、缩小、全图展示以及清除标记等操作。" 在ArcGIS API for JavaScript中,我们可以利用地图API的功能来实现对地理空间数据的测量,包括距离测量和面积测量。这个DEMO提供了一个直观的用户界面,通过按钮触发不同的测量和地图操作。 1. **距离测量**:在地图上选择两点或多点,API将根据地图投影计算两点间的直线距离或沿着地理路径(考虑地球曲率)的距离。这通常涉及到`esri.geometry.Geometry`对象,`esri.tasks.GeometryService`服务以及`GeometryService.measure`方法。 2. **面积测量**:用户可以选择一个多边形区域,API会计算该区域的面积。这可能使用了`GeometryService.calculateArea`方法,它接受一个几何对象(例如多边形)并返回其面积,单位可以是平方像素、平方米或其他自定义单位。 3. **平移、拉框放大/缩小、全图**:这些功能涉及地图的基本操作。平移是改变地图视图的位置,拉框放大和缩小是通过用户选择的矩形区域来调整地图的缩放级别。全图功能则将地图视图恢复到初始状态,显示整个地图范围。这些操作通常通过`Map`对象的方法如`pan`, `zoomIn`, `zoomOut`, 和 `extent`来实现。 4. **消除标记**:在进行测量后,可能会在地图上留下标记,消除标记功能用于清理这些视觉元素,保持地图的清晰。这可能通过删除图形层上的特定图徵或者重置图层来实现。 5. **HTML和CSS**:DEMO中的HTML结构定义了用户界面的布局,CSS样式表(tundra.css)提供了Dijit UI组件的外观。`<input>`标签表示按钮,`<div id="map">`是地图容器。 6. **JavaScript库**:引入了arcgis API的3.21版本和jQuery库,前者用于地图操作和测量,后者用于DOM操作和事件处理。 在实际应用中,开发者需要根据用户点击按钮的事件来调用相应的测量或地图操作函数,并处理测量结果的显示。此外,需要注意的是,由于地球是一个球体,测量时必须考虑地理坐标系的特性,例如使用地理坐标系统进行测量时,需要考虑经纬度的弧度转换。在3.x版本的API中,这些操作可以通过ArcGIS服务和相应的函数来完成。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link rel="stylesheet" type="text/css" href="https://js.arcgis.com/3.21/esri/css/esri.css" />
<link rel="stylesheet" type="text/css" href="https://js.arcgis.com/3.21/dijit/themes/tundra/tundra.css" />
</head>
<body>
<input type="button"class="functionWrap" name="平移" value="平移" />
<input type="button"class="functionWrap" name="拉框放大" value="拉框放大" />
<input type="button"class="functionWrap" name="拉框缩小" value="拉框缩小" />
<input type="button"class="functionWrap" name="全图" value="全图" />
<input type="button"class="functionWrap" name="距离测量" value="距离测量" />
<input type="button"class="functionWrap" name="面积测量" value="面积测量" />
<input type="button"class="functionWrap" name="消除标记" value="消除标记" />
<div id="map"></div>
</body>
<script type="text/javascript" src="https://js.arcgis.com/3.21"></script>
<script src="../Scripts/jsapi_vsdoc12_v38.js"></script>
<script src="../Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function () {
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/toolbars/navigation",
"esri/toolbars/draw",
"esri/symbols/Font",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/TextSymbol",
"esri/Color",
"dojo/number",
"esri/graphic",
"esri/tasks/LengthsParameters",
"esri/geometry/Point",
"esri/geometry/Polyline",
"esri/tasks/AreasAndLengthsParameters",
"dojo/dom-attr",
"dojo/domReady!"
], function (Map, ArcGISDynamicMapServiceLayer, Navigation, Draw, GeometryService, Font, SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol,TextSymbol, Color, number, Graphic, LengthsParameters,
Point,Polyline,AreasAndLengthsParameters,domAttr){
var chinaCollagelayer = new ArcGISDynamicMapServiceLayer("../arcgis/rest/services/Test/Qingdao/MapServer");
var map = new Map("map");
map.addLayer(chinaCollagelayer);
//创建地图操作对象
var navToolbar = new Navigation(map);
//toolbar工具条
var toolbar = new Draw(map);
//调用esri自带的服务(在arcgis server Manger中,记得开启服务)
var geometryService = new GeometryService("../arcgis/rest/services/Utilities/Geometry/GeometryServer");
var totleDistance = 0.0;//总距离
var totalGraphic = null;//存储点集合
var disFun =false;//距离测量
var areaFun = false;//面积测量
剩余8页未读,继续阅读
- 粉丝: 2
- 资源: 32
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展