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>
实现完整代码如下
<!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实现计算面积和周长
- Arcgis for js之GP实现缓冲区计算
- Arcgis for js之GP实现缓冲区计算
- Arcgis for js之GP实现缓冲区计算
- (转)Arcgis for JS实现台风运动路径与影像范围的显示
- arcgis api for javascript 计算长度和面积
- arcgis for js 实现点、线、面、手动线、手动面缓冲区分析功能
- arcgis api for js实现克里金插值渲染图--不依赖GP服务
- Arcgis for Js之GeometryService实现测量距离和面积
- ArcGis for JS 利用QueryTask查询实现对地图的定位功能
- arcgis api for js之echarts开源js库实现地图统计图分析
- arcgis for js实现缓冲区分析功能
- Arcgis for Js实现graphiclayer的空间查询
- arcgis for js 的绘制
- Arcgis for Js之GeometryService实现测量距离和面积
- Arcgis for Js实现graphiclayer的空间查询
- arcgis api for js实现克里金插值渲染图--不依赖GP服务
- arcgis for js实现GP服务创建、发布、调用(GP模型制作与发布服务)
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- Arcgis for Js之鼠标经过显示对象名的实现