标签
概述
API 中的许多类都支持标签功能。但是,根据图层类型、几何类型以及您是在 2D 还是 3D 中工作,可以使用不同的属性和资源。
场景视图
所有具有属性的图层类型都支持标注labelingInfo,例如FeatureLayer。此属性指定为LabelClass对象的数组,其中包含labelExpressionInfo、labelPlacement和TextSymbol3DLayer。TextSymbol3DLayer类支持更改 label 图形的material 、 font 、 halo和其他属性。点、折线和多边形支持标注。
已知限制 (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 的字体
MapView中MapImageLayers支持的字体系列取决于安装在发布图层的ArcGIS Server上的字体。要检查 ArcGIS Server 上可用的字体,请在(需要管理员访问权限)下运行任务。要添加新字体,必须在您的计算机上安装该字体,并且通过使用 ArcGIS Desktop 注册该字体可供 ArcGIS Server 访问。如果应用程序使用了未安装的字体,Font类将实现一个回退机制,该机制将使用默认字体系列值,即.Available FontsHome > services > System > PublishingTools (GPServer)sans-serif