arcgis for js开发之路径分析
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开发之路径分析的更多相关文章
- Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...
- Arcgis for Js之加载wms服务
概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...
- WebAppBuilder独立于Portal之arcgis for js应用框架研究
1.前言 最近在做项目过程中,用到了WAB,先做一下总结和归类.Webappbuilder(简称WAB)是运行在portal或者online的一款webGIS开发应用程序,其代码开源并且具有优秀的设计 ...
- ArcGis API JS 4.X本地化部署与地图的基础使用
准备工作 首先下载ArcGIS API for JavaScript4.x,这里下载的是4.19. 官方下载地址:https://developers.arcgis.com/downloads/ ar ...
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- 移动端报表JS开发示例--获取定位
上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1 ...
- JS开发HTML5游戏《神奇的六边形》(一)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- Linux虚拟机中 Node.js 开发环境搭建
Node.js 开发环境搭建: 1.下载CentOS镜像文件和VMWare虚拟机程序; 2.安装VMWare——>添加虚拟机——>选择CentOS镜像文件即可默认安装带有桌面的Linux虚 ...
- heX——基于 HTML5 和 Node.JS 开发桌面应用
heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...
随机推荐
- 【DFS】困难的串
题目: 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串.如:BB,ABCDACABCAB,ABCDABCD都是容易的,A,AB,ABA,D,DC,ABDAB,CB ...
- 【逆元】HDU-1576
逆元: 同余方程 ax≡1(mod n),gcd(a,n) = 1 时有解,这时称求出的 x 为 a 的对模n的乘法逆元.(注意:如果gcd(a,n)如果不等于1则无解),解法还是利用扩展欧几里得算法 ...
- [Swift]LeetCode697. 数组的度 | Degree of an Array
Given a non-empty array of non-negative integers nums, the degreeof this array is defined as the max ...
- [Swift]LeetCode987. 二叉树的垂序遍历 | Vertical Order Traversal of a Binary Tree
Given a binary tree, return the vertical order traversal of its nodes values. For each node at posit ...
- PHP算法之斐波那契数列(递归)
/*斐波那契数列 源代码分析 f(x) = 1 ; 当 x < 2 ; f(x) = f(x-1)+f(x-2); 当 x >= 2 ; 通项式为:fn ={((1+根号5)/2)^n-( ...
- 面试题:反转字符串(leetcode344)
编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 你可以 ...
- visualsvn的迁移及svn的一些问题
从A服务器将visualsvn的内容迁移到B服务器的visualsvn. 1 在B服务器上安装visualsvn 到visualsvn官网https://www.visualsvn.com/下载vis ...
- Python 创建递归文件夹
# 创建递归文件夹 def createfiles(filepathname): try: os.makedirs(filepathname) except Exception as err: pri ...
- 9.Flask Cookie和Session
1.1.概念 cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...
- Nancy in .Net Core学习笔记 - 视图引擎
前文中我们介绍了Nancy中的路由,这一篇我们来介绍一下Nancy中的视图引擎. Nancy中如何返回一个视图(View) 在ASP.NET Mvc中,我们使用ViewResult类来返回一个视图.N ...