ArcGIS API for JavaScript 4.x 标注功能

标签

概述

API 中的许多类都支持标签功能。但是,根据图层类型、几何类型以及您是在 2D 还是 3D 中工作,可以使用不同的属性和资源。

场景视图

所有具有属性的图层类型都支持标注labelingInfo,例如FeatureLayer。此属性指定为LabelClass对象的数组,其中包含labelExpressionInfo、labelPlacement和TextSymbol3DLayer。TextSymbol3DLayer类支持更改 label 图形的material 、 font 、 halo和其他属性。点、折线和多边形支持标注。

示例:平面与体积 3D 符号图层

已知限制 (SceneView)

目前一个特征只能有一个标签。如果一个特征满足多个LabelClasses的where条件,则只显示第一个匹配的LabelClass对应的标签。

标签放置仅适用于点图层。

如果设置了TextSymbol3DLayer.size属性,它将覆盖Font.size属性。

SceneView 的字体

3D场景视图支持的字体系列取决于安装在用户计算机和 Web 浏览器上的字体。如果应用程序使用了未安装的字体,Font类将实现一个回退机制,该机制将使用默认字体系列值,即. 有关如何在Windows或Mac上安装新字体的说明,请参阅这些参考资料。sans-serif

本地未安装的字体也可以通过在 css 文件中定义@font-face来从 url 加载:

@font-face {

  font-family: "MyFont";

  font-style: normal;

  font-weight: 400;

  font-display: auto;

  src: url("./my-font.ttf") format("truetype");

}

并从符号层中的Font.family属性引用它:

const labelSymbol = {

  type: "label-3d",

  symbolLayers: [

    {      type: "text", 

     material: {        color: [0, 0, 0, 0.8]      }, 

     font: {        size: 30,        family: "MyFont"      }

    }

  ],}

地图视图

FeatureLayer、CSVLayer 和 StreamLayer

2D MapViews中的FeatureLayer、CSVLayer、StreamLayer、OGCFeatureLayer和Sublayer支持标注。labelingInfo属性被指定为LabelClass对象的数组,其中包含labelExpressionInfo、labelPlacement和TextSymbol。该类支持更改标签图形的color、font、halo和其他属性。点、折线和多边形支持标注。TextSymbol

示例:多行标签

已知限制 (MapView)

对Font.family、Font.style和Font.weight属性的支持基于托管字体文件的.pbf格式。默认情况下,字体在https://static.arcgis.com/fonts. 可以通过设置esriConfig.fontsUrl属性来配置 URL。查看可用字体系列的字体。

FeatureLayer、CSVLayer 和 StreamLayer 的字体

对Font.family、Font.style和Font.weight属性的支持基于托管字体文件的.pbf格式。默认情况下,可用的字体大多与 Esri 矢量底图使用的字体相同。这些字体列在Esri 矢量底图参考文档的Esri Vector Basemaps Resources\Fonts标题下。这些字体可通过https://static.arcgis.com/fonts. 通过设置esriConfig.fontsUrl属性,可以将 URL 配置为指向您自己的字体资源。

如果字体不可用,它将使用默认字体系列,即sans-serif. 这使用Arial Unicode MS字体文件。

带有bold,italic或两者的字体需要在Font.style和Font.weight属性中设置这些属性,而不是在Font.family中设置。要查看哪些字体支持哪些类型的字符(例如拉丁文、西里尔文、CJKV),您可以在Microsoft Typography或Google Fonts中搜索字体名称。

请注意,这些字体也适用于TextSymbol,无论它是用作 2D MapView 中的图形还是标签。

2D MapView 当前支持的字体列表:

字体预览代码

详见官网https://developers.arcgis.com/javascript/latest/labeling/

地图图像层

通过在Sublayer类上设置labelingInfo属性, MapImageLayer支持标注。该属性被指定为LabelClass对象的数组,其中包含labelExpression、labelPlacement和TextSymbol。该类支持更改标签图形的color、font、halo和其他属性。点、折线和多边形支持标注。labelingInfoTextSymbol

示例:MapImageLayer - 标签子层特征

MapImageLayer 的字体

MapView中MapImageLayers支持的字体系列取决于安装在发布图层的ArcGIS Server上的字体。要检查 ArcGIS Server 上可用的字体,请在(需要管理员访问权限)下运行任务。要添加新字体,必须在您的计算机上安装该字体,并且通过使用 ArcGIS Desktop 注册该字体可供 ArcGIS Server 访问。如果应用程序使用了未安装的字体,Font类将实现一个回退机制,该机制将使用默认字体系列值,即.Available FontsHome > services > System > PublishingTools (GPServer)sans-serif

你可能感兴趣的:(ArcGIS API for JavaScript 4.x 标注功能)