arcgis for js 如何自定义绘制仿高德导航线(自定义轨迹路线)

1、arcgis for js + vue3

绘制效果图
自定义路线样式效果

实现

1、实现上图路线的自定义线条,先拆分线条为三个部分:较宽的暗绿色背景+浅绿色背景+白色箭头
2、自定义线条的symbol,使用CIMSymbol

import CIMSymbol from "@arcgis/core/symbols/CIMSymbol";

// 背景箭头轨迹样式
export const arrowsLineSymbol = new CIMSymbol({
  data: {
    type: "CIMSymbolReference",
    symbol: {
      type: "CIMLineSymbol",
      symbolLayers: [
        {
          // 路线白色箭头
          type: "CIMVectorMarker",
          enable: true,
          size: 4,
          markerPlacement: {
            type: "CIMMarkerPlacementAlongLineSameSize", // 在这条线上放置相同大小的标记
            endings: "WithMarkers",
            placementTemplate: [19.5], // 箭头间距
            angleToLine: true, // 符号保持其与直线的角度
          },
          frame: {
            xmin: -5,
            ymin: -5,
            xmax: 5,
            ymax: 5,
          },
          markerGraphics: [
            {
              type: "CIMMarkerGraphic",
              geometry: {
                rings: [
                  // 箭头-自定义绘制路线上面的连续出现的图标
                  [
                    [-5, -5.47],
                    [1.96, -0.03],
                    [-6, 5.6],
                    [1.96, -0.03],
                    [-5, -5.47],
                  ],
                ],
              },
              symbol: {
                // 符号样式
                type: "CIMPolygonSymbol",
                symbolLayers: [
                  {
                    type: "CIMSolidStroke", // 闭合的
                    enable: true,
                    color: [255, 255, 255, 255],
                    width: 1,
                  },
                ],
              },
            },
          ],
        },
        {
          // 路线浅绿色背景
          type: "CIMSolidStroke",
          enable: true,
          capStyle: "Butt",
          joinStyle: "Round",
          width: 5,
          color: [48, 211, 102, 255],
        },
        {
          // 路线暗绿色边框
          type: "CIMSolidStroke",
          enable: true,
          capStyle: "Butt",
          joinStyle: "Round",
          width: 8,
          color: [0, 115, 76, 255],
        },
      ],
    },
  },
});

3、结合上面的symbol,绘制自定义线条的图层

import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";
import Polyline from "@arcgis/core/geometry/Polyline";
import Graphic from "@arcgis/core/Graphic";
// 引入自定义symbol
import { arrowsLineSymbol } from "./symbol";

function createLine(
	map: Map | undefined, // 项目地图map
	wktJson: any // 路线坐标集、坐标系对象
) {
	if (!map) return;
	const graphicsLayer = new GraphicsLayer(); // 创建一个图层对象
	const polyline = new Polyline({
      ...wktJson, // paths:[[x1, y1], [x2, y2], ...], spatialReference: new SpatialReference({wkid: xxxx})
    });
    // 图层
	const lineGraphic = new Graphic({
      geometry: polyline,
      symbol: arrowsLineSymbol,
    });
    // 图层添加到图层组对象
    graphicsLayer.add(lineGraphic);
	map.add(graphicsLayer); // 将图层添加到地图上
}

4、总结: 可以根据修改symbol参数自定义绘制更多图层样式

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS API for JavaScript是一个强大的JavaScript库,可用于创建动态和交互式地图应用程序。它提供了丰富的功能和工具,使开发者能够绘制各种地图元素。 使用ArcGIS API for JavaScript绘制地图非常简单。首先,你需要准备一个HTML页面,并引入API的库文件。然后,你可以创建一个地图对象,指定要显示的地图范围和初始缩放级别。 在地图上绘制点、线、面等要素非常容易。你可以使用API提供的图形类,如Point、Polyline和Polygon来创建要素对象。当你创建完要素对象后,只需将其添加到地图显示的图层中即可。 除了绘制基本要素,API还提供了丰富的绘图工具,如绘制圆、矩形、箭头等。你可以使用这些工具在地图上绘制复杂的形状。 此外,ArcGIS API for JavaScript还支持绘制标注、文本和图像等。你可以在地图上添加标签或图片来展示特定的信息。 绘制功能不仅限于地图要素,还可应用于其他地图操作,如测量距离、面积等。API提供了测量工具来帮助你快速计算地图上的距离和面积。 最后,ArcGIS API for JavaScript还支持与其他库和服务的集成。你可以将绘制的地图元素与数据库、GIS服务等进行交互,并在应用程序中展示或分析这些数据。 总而言之,ArcGIS API for JavaScript是一个功能强大的工具,可以帮助你绘制各种地图要素和操作。无论是简单的点线面,还是复杂的测量和分析,API都提供了丰富的功能和工具供你使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值