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);
        });
}
时间: 2024-11-07 21:47:08

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

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

上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1. 解决思路 在用FineReport设计模板的时候添加一个按钮控件,点击该按钮的时候,获取当前地理位置,并将该位置信息复制给某个单元格,最后在客户端填报当前模板即可. 2. 示例 实现如下图所示效果,点击地理位置按钮获取当前位置与当前时间,并显示在下方对应的单元格中: 2.1 模板制作 打开设计器

用Node.js开发Windows 10物联网应用

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 未来10年内,物联网将会如移动互联网这样深入到我们生活的各方各面.所以微软现在对物联网进行了大量的投资,比如Windows 10就有一个单独的IoT版本.而今天推荐的文章是告诉大家如何把Node.js开发带到Windows 10 IoT中. 在月初Build大会上,微软发布了Windows 10 IoT Core Insider Preview,这个版本可以安装到树莓派2(Raspberry Pi

vue.js开发环境搭建

1.安装node.js,忽略 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd里直接输入:npm install -g cnpm –-registry=https://registry.npm.taobao.org,回车,等待安装... 3.安装全局vue,用于帮助搭建所需的模板框架 在cmd里, 1).输入:cnpm install -g vue-cli,回车,等待安装...2).输入:vue -V,回车,若出现vue信息说明表示成功 4.创建vue项目 在cmd里输入:vue

Arcgis for Js实现graphiclayer的空间查询

本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容非常easy.代码例如以下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-

Mac下进行Node.js开发环境的配置

我们知道,Mac是一款天生可以提升我们开发效率的系统,合理的使用Mac下面的神器,有助于提升我们的开发效率.个人是个VIM控,今天分享一下,我在mac下是如何进行Node.js的开发环境搭建的.先给大家看看最终的效果图片吧! Iterm2 首先,推荐Iterm2这款命令行神器.它是一款终端替代工具,支持 Macos 10.5+ 版本.它具备很多优点:比如开源免费.快捷键丰富.水平垂直分屏.远程使用vi时兼容性好.如果再加上一点,就是它UI也比较友好,如果你喜欢捣鼓,可以配置主题,让iterm2界

Mac下进行Node.js开发环境配置

我们知道,Mac是一款天生可以提升我们开发效率的系统,合理的使用Mac下面的神器,有助于提升我们的开发效率.个人是个VIM控,今天分享一下,我在mac下是如何进行Node.js的开发环境搭建的.先给大家看看最终的效果图片吧! Iterm2 首先,推荐Iterm2这款命令行神器.它是一款终端替代工具,支持 Macos 10.5+ 版本.它具备很多优点:比如开源免费.快捷键丰富.水平垂直分屏.远程使用vi时兼容性好.如果再加上一点,就是它UI也比较友好,如果你喜欢捣鼓,可以配置主题,让iterm2界

ArcGIS网络分析之Silverlight客户端路径分析(三)

原文:ArcGIS网络分析之Silverlight客户端路径分析(三) 首先贴上最终的效果图: a.路径查询 2.最近设施点查询 3.服务区分析 说明: 1.以上的示例使用的数据是随意在ArcMap中创建的数据,也就是之前博文新建的数据,这里的单位和比例尺并不是实际的单位和比例尺.所以和底图的显示不一致,这里的底图只是为了增加显示的效果. 2.以上所以的实现基于之前的两篇关于网络分析的博文,在此推荐看一看. 3.以上示例的具体细节将会分别为大家讲解,欢迎大家相互交流,批评指正. 一.路径分析服务

ArcGIS4Android 1:使用Android Studio进行ArcGIS for Android开发的环境部署-正确版

按照许多方法尝试配置环境,均不能显示地图,模拟运行时程序直接退出. 最后看到这个博友的配置,缺少了重要的一步:引用so文件. 对于有些人可能不会出问题,我这里反正出问题了. 引用so文件,打开moudle目录下的build.gradle,在android节点下添加如下配置. 注:如果没有正确引入so文件,在程序执行的时候会加载类库失败. ---------------------------原文在下-------------------------------------- 乘风莫邪 使用And

推荐近期15个 Node.js 开发工具

近来Node.js 越来月流行了,这个基于Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些工具对于刚刚开始学习 Node.js 的新手开发者非常有帮助.如果你知道任何其他有用的 Node.js 资源,请让我们知道. 1. IO.js JavaScript的I / O是一个NPM兼容的平台,最初是基于Node.js和建立在Chrome V8运行.它的目的是提供更快和可预测的发布周期. 2.