Arcgis route demo

能力描述收费情况
简单路径计算route坐标点之间的路径计算20,000 条路线免费,然后每 1,000 条路线 0.5 美元
坐标点的服务区域Service areas驾驶或行走时可以到达的区域5,000 个服务区免费,然后每 1,000 个服务区 50 美元
路线安排提供线路服务的同时最小化整体运输成本的过程每 1,000 条路线 50 美元
最近设施点路线根据行程时间或行程距离从事件中查找一个或多个附近设施点每 1,000 条路线 50 美元

注:仅route、service areas 支持 JS API调用

Arcgis route demo

效果图
在这里插入图片描述

1、模块添加等操作(这里注意官方文档对route模块使用的是export 来导出,因此需要注意引入方式)

import Map from "@arcgis/core/Map";
import MapView from "@arcgis/core/views/MapView";
import esriConfig from "@arcgis/core/config";
import Graphic from "@arcgis/core/Graphic";
import Point from "@arcgis/core/geometry/Point"; // 经纬度点
import { solve } from "@arcgis/core/rest/route";
import RouteParameters from "@arcgis/core/rest/support/RouteParameters";
import FeatureSet from "@arcgis/core/rest/support/FeatureSet";

2、地图注册

 const map = new Map({
    basemap: 'arcgis-navigation'
  });  
const view = new MapView({
    container: "viewDiv",
    map: map,
    center: new Point([-122.62, 45.526201]),
    zoom: 12,
    constraints: {
      snapToZoom: false
    }
  });

3、先定义几个点绘制在地图上

  const origin = new Point([-122.690176, 45.522054]);
  const stop = new Point([-122.614995, 45.526201]);
  const destination = new Point([-122.68782, 45.51238]); 
  const graphic = new Graphic({
      symbol: {
        type: "simple-marker",
        color: '#000000',
        size: size,
        outline: {
          color: '#ffffff',
          width: "1px"
        }
      },
      geometry: point
    });
    view.graphics.add(graphic);

4、连线

/**
* stops: 起始点信息
* routeUrl // 引用路由服务的变量
* returnDirections 控制solve方法return的routeResults有没有路径文字信息
*/ 
function getRoute() {
    const routeUrl = "https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World";
    const routeParams = new RouteParameters({
      stops: new FeatureSet({
        features: view.graphics.toArray()
      }),
        returnDirections:true
    });
     //调用solve方法获取路由
    solve(routeUrl, routeParams)
      .then((data) => {
        if (data.routeResults.length > 0) {
          showRoute(data.routeResults[0].route);
        }
      })
      .catch((error) => {
        console.log(error);
      })
  }

  function showRoute(routeResult) {
    routeResult.symbol = {
      type: "simple-line",
      color: [5, 150, 255],
      width: 3
    };
    view.graphics.add(routeResult, 0);
  }

Arcgis Fleet-routing demo

Arcgis Closest facility routing demo

Arcgis Service areas demo

效果图

在这里插入图片描述

1、模块引入(同理需要注意networkService、serviceArea的引入)

import Map from "@arcgis/core/Map";
import MapView from "@arcgis/core/views/MapView";
import esriConfig from "@arcgis/core/config";
import Graphic from "@arcgis/core/Graphic";
import ScaleBar from "@arcgis/core/widgets/ScaleBar"; // 比例尺
import { fetchServiceDescription } from "@arcgis/core/rest/networkService"; //出行模式travelMode需要
import { solve } from "@arcgis/core/rest/serviceArea";
import FeatureSet from "@arcgis/core/rest/support/FeatureSet";
import ServiceAreaParameters from "@arcgis/core/rest/support/ServiceAreaParameters";

2、地图注册

  const map = new Map({
    basemap: "arcgis-navigation"
  });
  const view = new MapView({
    container: "viewDiv",
    map,
    center: [-117.133163, 34.022445],
    zoom: 13,
    constraints: {
      snapToZoom: false
    }
  });

3、根据中心点圈出服务范围

async function findServiceArea(locationFeature) {
    const serviceAreaParameters = new ServiceAreaParameters({
      facilities: new FeatureSet({
        features: [locationFeature]
      }),
      defaultBreaks: [5], // 距离 可传多个 如[2.5,5,10,···]
      travelDirection: "to-facility",// 可选'from-facility' 去或来
      trimOuterPolygon: true // 休整最外圈的图形 否则很丑
    });
    const { serviceAreaPolygons } = await solve(url, serviceAreaParameters);
    for (const graphic of serviceAreaPolygons) {
      graphic.symbol = {
        type: "simple-fill",
        color: "#009455"
      }
    }
    view.graphics.addMany(serviceAreaPolygons, 0);
  }

4、可选择模式travelMode

travelMode 是一个JSON 对象可由fetchServiceDescription调用服务url后在返回的supportedTravelModes数组里面获取

const networkDescription = await fetchServiceDescription(url);
travelMode = networkDescription.supportedTravelModes.find(
  // (travelMode) => travelMode.name === "Driving Distance"
  (travelMode) => travelMode.name === "Driving Time"
);
const serviceAreaParameters = new ServiceAreaParameters({
	facilities: new FeatureSet({
    features: [locationFeature]
    }),
    defaultBreaks: [0.5, 1, 2],
    travelMode,
    travelDirection: "to-facility",
    trimOuterPolygon: true
  });
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值