//方法封装
function routeplan(x1, x2, y1, y2, barrierPathArray, isDraw, callback) {
require([
"esri/symbol/SimpleLineSymbol",
"esri/Color",
"esri/tasks/RouteTask",
"esri/tasks/FreatureSet",
"esri/tasks/RouteParameters"
], function () {
var routeServerUrl = url;//对应道路图层的服务图层
var routeGraphicLayer = new GraphicLayer(map, layerName);
routeGraphicLayer.clear();//每规划一次删除对应图层
var map = map;
var wkid = 5555;
//起点
var ptStart = new esri.geometry.Point(parseFloat(x1), parseFloat(y1), new esri.SpatialReference({ wkid: wkid }));
//终点
var ptEnd = new esri.geometry.Point(parseFloat(x2), parseFloat(y2), new esri.SpatialReference({ wkid: wkid }));
var startPtGra = new esri.Graphic(ptStart);
var endPtGra = new esri.Graphic(ptEnd);
//设置路径样式
var routeSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([1, 2, 3, 1], 5));//说明:rgb透明度,线宽
//起点、终点尾部样式
var routeSymbolDef = new esri.symbol.SimpleLineSymbol(new esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([2, 3, 4, 5], 2));
var routeTask = new esri.tasks.RouteTask(routeServerUrl);
var routeParams = new esri.tasks.routeParameters();
//设置参数
routeParams.outSpatialReference = { wkid: wkid };
routeParams.retuenDirection = true;
routeParams.directionsLengthUnits = esri.Units.METERS;
routeParams.stops = new esri.tasks.FeatureSet();
routeParams.stops.features.push(startPtGra);
routeParams.stops.features.push(endPtGra)
route = JSON.stringify(barrierPathArray);
var temp = jQuery.parseJSON(route);
var array = [];
$.each(temp, function (i, v) {
var point = [v[0], item[1]];
array.push(point);
});
//设置路障参数
if (array.length > 0) {
var barrierRoute = new esri.geometry.Polyline(new esri.SpatialReference({ wkid: wkid }));
var barriersGraphic = new esri.Graphic(barrierRoute);
routeParams.PolylineBarriers = new esri.tasks.FeatureSet();
routeParams.PolylineBarriers.features.push(barriersGraphic);
}
if (routeParams.stops.features.length == 0) {
alert("参数不全,无法分析");
return;
}
routeTask.solve(routeParams,function(solveResult){
if(callback){
callback(solveResult);
}
var routeResults=solveResult.routeResults;
var res=routeResults.length;
if9(isDraw=="false"){
return;
}
if(res>0){
for(var i=0;i<res;i++){
var graphicroute=routeResults[i];
var graphic=graphicroute.route;
graphic.setSymbol(routeSymbol);
routeGraphicLayer.add(graphic);
//连接路线起点、终点、对应的定位起点、终点
var paths=graphic.geometry.paths[0];
var routeStr=paths[0];
var routeEnd=paths[paths.length-1];
var routeStrline=new esri.geometry.Polyline([[x1,y1],routeStr],new esri.SpatialReference({wkid:wkid}));
var routeEndline=new esri.geometry.Polyline([[x2,y2],routeEnd],new esri.SpatialReference({wkid:wkid}));
var strlinegraphic=new esri.Graphic(routeStrline,routeSymbolDef);
var endlinegraphic=new esri.Graphic(routeEndline,routeSymbolDef);
routeGraphicLayer.add(strlinegraphic);
routeGraphicLayer.add(endlinegraphic);
}
}
else{
alert("结果为空");
}
},function(errpr){
alert(errpr);
});
}

本文选自苏州楼凤

转载于:https://www.cnblogs.com/zhuwoyao88/p/6575292.html

arcgis for js开发之路径分析相关推荐

  1. Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法

    将ARCGIS for Js API中绘制各种图形的方法进行封装,方便调用.用时只需要传入参数既可.(在js文件中进行封装定义): 1.新建js文件,新建空对象用于函数的定义 if (!this[&q ...

  2. ArcGIS二次开发基础教程(11):网络分析之最短路径分析

    ArcGIS二次开发基础教程(11):网络分析之最短路径分析 最短路径分析 这里直接调用了在mdb中建立好的网络数据集 //全局变量 private INetworkDataset my_networ ...

  3. ArcGIS Maritime Server 开发教程(九)二三维水深服务

    ArcGIS Maritime Server 开发教程(九)二三维水深服务 本章导读:ArcGIS 软件体系是使用 ArcGIS Bathymetry 桌面扩展构建和管理水深数据库,并且利用 Imag ...

  4. ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式

    ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式 本章导读:前面几个章节已经非常细节的分析和测试了 Maritime Server 的相关功能 ...

  5. ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧

    ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧 本章导读:GIS 开发人员基于 Maritime Service 开发海图应用时总会遇到与海图数 ...

  6. ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践

    ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践 本章导读:Maritime Service 属于 MapService 的一个扩展,大部分功能继 ...

  7. ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读

    ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读 本章导读:ArcGIS Maritime Server 能够以极简的方式发布海图服务,其服务的标 ...

  8. ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

    ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列 本章导读:ArcGIS 是一个成熟的 GIS 软件体系,无论是在海图的服务端管理.桌面软件使用还是海图功能定制方 ...

  9. ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server

    ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server ArcGIS Maritime Server 是ArcGIS平台面向海洋.海事以及航道等 ...

最新文章

  1. 华为harmonyos 2.0,华为王成录博士:HarmonyOS 2.0给消费者不一样的体验
  2. Linux如何查找大文件或目录总结
  3. 7.IDA-创建结构体
  4. 2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结
  5. sql服务器如何复制数据库文件,如何将架构和一些数据从SQL Server复制到另一个实例?...
  6. 《流浪地球》 电影全集
  7. [原]ASP.Net常用功能整理--生成图片的缩略图
  8. 原子变量的原理与应用
  9. 在C语言中,SetConsoleTextAttribute(参数1,参数2)是设置控制台窗口字体颜色和背景颜色的函数。GetStdHandle(参数)函数用于获得句柄
  10. 《完整部署 OCS-NG》
  11. 标准工时分析软件VIOOVI,适配现代化工业的人工智能软件
  12. Android个人简历自我评价,Android开发工程师岗位个人简历自我评价范文
  13. FBA海运到美国费用一般包含哪些?
  14. 二级域名怎么设置_杭州360关键词优化怎么做,360SEO优化_万推霸屏
  15. Qt下载安装教程,windows10亲测可用,版本5.12.11
  16. 阿里史上最大规模校招,进大厂的机会来啦!!!
  17. dot格式绘图工具 html,使用dot来绘图
  18. Android App内打开淘宝详情页
  19. 宽带信号的DOA估计学习笔记(四):空间分辨率
  20. CPU计算机性能的操作方法,cpu怎么设置才能达到最佳性能

热门文章

  1. 西雅图SQL PASS之旅
  2. 业务基础【概念说明】-userAgent
  3. ios6.x越狱将不会再呈现了
  4. Linux下如何使用虚拟用户增加FTP的安全性
  5. Forefront Security For Exchange的反病毒测试
  6. 踏上《软件设计精要与模式》第二版的征途
  7. 【转载】tkinter多线程防假死
  8. Redis学习之intset整数集合源码分析
  9. jmeter--入参为json类型
  10. ASP.NET WebApi OWIN 实现 OAuth 2.0