arcgis for js开发之路径分析


//方法封装
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);
});
}

arcgis for js开发之路径分析的更多相关文章

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

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  2. Arcgis for Js之加载wms服务

    概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...

  3. WebAppBuilder独立于Portal之arcgis for js应用框架研究

    1.前言 最近在做项目过程中,用到了WAB,先做一下总结和归类.Webappbuilder(简称WAB)是运行在portal或者online的一款webGIS开发应用程序,其代码开源并且具有优秀的设计 ...

  4. ArcGis API JS 4.X本地化部署与地图的基础使用

    准备工作 首先下载ArcGIS API for JavaScript4.x,这里下载的是4.19. 官方下载地址:https://developers.arcgis.com/downloads/ ar ...

  5. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

  6. 移动端报表JS开发示例--获取定位

    上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1 ...

  7. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  8. Linux虚拟机中 Node.js 开发环境搭建

    Node.js 开发环境搭建: 1.下载CentOS镜像文件和VMWare虚拟机程序; 2.安装VMWare——>添加虚拟机——>选择CentOS镜像文件即可默认安装带有桌面的Linux虚 ...

  9. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

随机推荐

  1. 产品经理教你如何构建电商电销 CRM 系统

    在电销或网销行业中老板们会经常问到,上个月渠道投放花了多少钱,来了多少量,转化率怎么样,获得了多少新线索,获客成本如何,销售额是多少? 劈天盖地的各种数据需求飞来,没有一个像样的系统该如何是好?这时候 ...

  2. 【计算机篇】Office 2016 for Mac 安装和破解教程

    免责声明 请亲们支持正版.这教程旨在分享,供参考. 为啥写这篇文章 对于大多数使用 Mac 的用户而言,虽然有苹果自家的办公软件,但功能少,用起来不舒服.而 Offer 2016 版的需要登录激活购买 ...

  3. Eclipse显示行号

    Windows->preference->General->Editors->Text Editors->Show line numbers

  4. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    Serialization is the process of converting a data structure or object into a sequence of bits so tha ...

  5. MySQL 规范及优化

    一.建库建表优化 1.核心规范(推荐) 表字符集选择UTF8 (“表情”字段单独设置为其他字符集) 存储引擎使用INNODB 不在库中存储图片.文件等 使用可变长字符串(varchar) 每张表数据量 ...

  6. eclipse neon 发布

    2016年6月28日,Eclipse基金会宣布发布Eclipse Neon,这个版本的IDE支持Java.JavaScript.C/C++.PHP和Fortran等多种编程语言.这一次的发布集成了77 ...

  7. Python 实现获取微信好友信息

    最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...

  8. "无需开发经验" 也能拥有小程序

    本文分享嘉宾:毛帅,又拍图片管家资深开发工程师,主要负责又拍图片管家.图管小程序第三方平台.图管小程序等项目的开发.维护及拓新工作.熟悉 JS / C++ 等语言,有丰富的 NodeJS 开发经验,热 ...

  9. python中的pip

    python中的pip python有两个著名的包管理工具,其中,pip是一个.它对python的包进行管理和升级等操作. 问题一:pip本地的模块安装在哪里? 使用pip install numpy ...

  10. Qt之自定义托盘(二)

    上一篇文章讲述了自定义Qt托盘,不过不是使用QSystemTrayIcon这个类,而是我们自己完全自定义的一个类,我们只需要处理这个类的鼠标hover.鼠标左键点击.鼠标右键点击和鼠标左键双击,就可以 ...