## arcgis api for js共享干货系列之一自写算法实现地图量算工具 原

gis之家

construct: function (map) {

this._dciMap = map;

this._onClickHandler = dojo.hitch(this, this._onClickHandler);

this._onMouseMoveHandler = dojo.hitch(this, this._onMouseMoveHandler);

this._onDrawEndHandler = dojo.hitch(this, this._onDrawEndHandler);

this._onExtentChangeHandler = dojo.hitch(this, this._onExtentChangeHandler);

this._onGraphicClearHandler = dojo.hitch(this, this._onGraphicClearHandler);

this._graphicsLayer = new esri.layers.GraphicsLayer({ id: "DciMeatureGLyr" });

}

DUtil.getDistanceInEarth = function (point1, point2) {

var d = new Number(0);

//1度等于0.0174532925199432957692222222222弧度

var radPerDegree = Math.PI / 180.0;

if (DCI.Measure.map.spatialReference.wkid == "4326") {

var latLength1 = Math.abs(this.translateLonLatToDistance({ x: point1.x, y: point2.y }).x - this.translateLonLatToDistance({ x: point2.x, y: point2.y }).x);

var latLength2 = Math.abs(this.translateLonLatToDistance({ x: point1.x, y: point1.y }).x - this.translateLonLatToDistance({ x: point2.x, y: point1.y }).x);

var lonLength = Math.abs(this.translateLonLatToDistance({ x: point1.x, y: point2.y }).y - this.translateLonLatToDistance({ x: point1.x, y: point1.y }).y);

d = Math.sqrt(Math.pow(lonLength, 2) - Math.pow(Math.abs(latLength1 - latLength2) / 2, 2) + Math.pow(Math.abs(latLength1 - latLength2) / 2 + Math.min(latLength1, latLength2), 2));

}

else {

var len_prj = Math.pow((point2.x - point1.x), 2) + Math.pow((point2.y - point1.y), 2);

d = Math.sqrt(len_prj);

}

d = Math.ceil(d);

return d;

};

DUtil.translateLonLatToDistance = function (point) {

var d = new Number(0);

//1度等于0.0174532925199432957692222222222弧度

var radPerDegree = Math.PI / 180.0;

var equatorialCircumference = Math.PI * 2 * 6378137;

return {

x: Math.cos(point.y * radPerDegree) * equatorialCircumference * Math.abs(point.x / 360),

y: equatorialCircumference * Math.abs(point.y / 360)

};

};

1

//******求三角形面积****

DUtil.getTriangleArea = function (point1, point2, point3) {

var area = 0;

if (!point1 || !point2 || !point3) {

return 0;

}

if (DCI.Measure.map.spatialReference.wkid == "4326") {

point1 = this.translateLonLatToDistance(point1);

point2 = this.translateLonLatToDistance(point2);

point3 = this.translateLonLatToDistance(point3);

}

area = ((point1.x * point2.y - point2.x * point1.y) + (point2.x * point3.y - point3.x * point2.y) + (point3.x * point1.y - point1.x * point3.y)) / 2;

return area;

};

GIS作品展示地址：百度搜索：GIS之家（https://shop116521643.taobao.com/shop/view_shop.htm）;

gis百度贴吧：gis开发联盟；

GIS毕业设计&项目承接群：238339408

### gis之家

step1:1从arcgis官网上下载Arcgis api for JavaScript 4.3 https://developers.arcgis.com/javascript/latest/guide/release-notes/ ps:前提是你需要有一个esri开发者账户否则不能下载。 st......

duxiuxiu
2017/05/18
0
0
Esri美国用户大会Q&A 之 ArcGIS Server未来发展

2012年Esri全球用户大会正在举行，登录其官方网站我们可以找到对于今年用户大会的问答（Q&A），其中包括了云、三维、ArcGIS Server、ArcGIS Desktop等众多内容。原文地址：http://events.esr...

2012/11/28
370
0
vue地图可视化 ArcGIS篇（3）

ArcGIS for javascript开发心得 本次实例中采用ArcGIS for javascript3.24版本，由于版本3与4在API等存在较大区别，就不一一列举，详细区别看[官方解释] arcgis for js4.7版本能够自动创建l...

YJ在掘金
11/06
0
0
ArcGIS API for Javascript 2.X 离线部署（以2.6为例）

2012/10/24
0
0
2017第十五届esri用户大会观感（二）——大会整体

2017/10/31
0
0

Ubuntu16.04下安装docker

[TOC] 本文开发环境为Ubuntu 16.04 LTS 64位系统，通过apt的docker官方源安装最新的Docker CE(Community Edition)，即Docker社区版，是开发人员和小型团队的理想选择。 1. 开始安装 1.1 由于...

10
0

dragon_tech

7
0
day178-2018-12-15-英语流利阅读-待学习

“真蛛奶茶”了解一下？蜘蛛也会产奶了 Lala 2018-12-15 1.今日导读 “蛋白质含量是牛奶的 4 倍，并有着更低的脂肪和含糖量”，听起来诱人又美味的并不是羊奶或豆奶，而是你可能打死都想不到...

12
0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents

2
0
OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单（2018）请戳（这里） 【今日歌曲】 @达尔文 ：分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌，请使劲儿戳（这里...

464
6