您的位置:首页 > Web前端 > JavaScript

arcgis for js实现计算绘制线的长度

2018-01-04 15:48 471 查看
1.arcgis for js中实现计算绘制长度需要两个服务地址,一个为地图切片资源地址,一个为计算长度的工具服务地址,都可以在本地发布的arcgis server manager中拿到;

实现完整代码如下

<!DOCTYPE html>
<html>
<head>
<title>Draw Length工具</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>Shapes and Symbols</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8087/arcgis_js_api/library/3.22/3.22/esri/css/esri.css" />
<script src="http://localhost:8087/arcgis_js_api/library/3.22/3.22/init.js"></script>
<script src="../js/jquery-1.3.1.js"></script>
<style>

html, body, #mapDiv {
padding:0;
margin:0;
height:100%;
}
button {
display: block;
}
</style>

<script>
var map, tb;
var geometryService;
require([
"esri/map", "esri/toolbars/draw",
"esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol",
"esri/symbols/PictureFillSymbol", "esri/symbols/CartographicLineSymbol",
"esri/graphic",
"esri/Color", "dojo/dom", "dojo/on",
"esri/layers/ArcGISTiledMapServiceLayer",
"esri/tasks/GeometryService","esri/SpatialReference","esri/tasks/ProjectParameters","esri/tasks/LengthsParameters",
"dojo/domReady!"
], function(
Map, Draw,
SimpleMarkerSymbol, SimpleLineSymbol,
PictureFillSymbol, CartographicLineSymbol,
Graphic,
Color, dom, on,
ArcGISTiledMapServiceLayer,GeometryService,SpatialReference,ProjectParameters,LengthsParameters
) {
map = new Map("mapDiv", {
"xmin":126.08797131337525,"ymin":41.88483304829672,"xmax":130.05572254059723,"ymax":47.20292839632739,
"spatialReference":{"wkid":4326}
});
map.on("load", initToolbar);
var oilAndGasLayer = new ArcGISTiledMapServiceLayer("http://localhost:6080/arcgis/rest/services/itms/MapServer");
map.addLayer(oilAndGasLayer);

geometryService=GeometryService("http://localhost:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer");

geometryService.on("project-complete", function(graphics) {
debugger;
//call GeometryService.lengths() with projected geometry
var lengthsParameters=new LengthsParameters();
lengthsParameters.polylines = graphics.geometries;
lengthsParameters.lengthUnit = GeometryService.UNIT_METER;
lengthsParameters.geodesic = true;
geometryService.lengths(lengthsParameters,function(result){
document.getElementById("distance").innerHTML = dojo.number.format(result.lengths[0] / 1000) + " kilometers";
});
});

function initToolbar() {
tb = new Draw(map);
tb.on("draw-complete", addGraphic);
tb.activate(Draw.FREEHAND_POLYLINE);
}

function addGraphic(result) {
map.graphics.clear();
map.graphics.add(new Graphic(result.geometry, new SimpleLineSymbol()));
var projectParameters=new ProjectParameters();
projectParameters.geometries=[result.geometry];
projectParameters.outSR=new SpatialReference(4326);
geometryService.project(projectParameters);
}
});
</script>
</head>

<body>
<div id="mapDiv" style="height: 95%"></div>
Distance: <span id="distance"></span>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arcgis for js length