ArcGIS应用程序中的特征层、图形叠加层和地图图像层子层可以使用属性值、文本字符串和表达式计算值的组合来标记。可以确定标签的定位和优先级,以及如何自动动态地解决重叠标签之间的冲突。
一、Label properties常见属性介绍
- 1、Which geoelements to label ( LabelDefinition.setWhereClause() )
这里类似SQL的过滤条件。把符合条件的数据找出来。
比如:
labelDefinition.setWhereClause(String.format("PARTY = '%s'", party));
- 2、Label text ( LabelDefinition.setExpression() ,
SimpleLabelExpression , ArcadeLabelExpression ,
WebmapLabelExpression )
把找出的数据,选择其中某一个或几个字段在标签上展示出来,包括样式设置。样式设置可以使用TextSymbol对象。要显示的字段在ArcadeLabelExpression中定义。
比如:
ArcadeLabelExpression arcadeLabelExpression =
new ArcadeLabelExpression("$feature.party");
$feature.party:相当于告诉它是表中哪个字段
-
3、 Text symbol ( LabelDefinition.setTextSymbol() ,
TextSymbol )样式设置。可以使用setTextSymbol方式设置对象。也可以使用LabelDefinition构造对象时与ArcadeLabelExpression一起对LabelDefinition构造。
比如:
// create text symbol for styling the label
TextSymbol textSymbol = new TextSymbol();
textSymbol.setSize(12);
textSymbol.setColor(Color.WHITE);
- 4、Placement ( LabelDefinition.setPlacement() , LabelingPlacement )
标签的显示方式
Above right for point labels
Above along for line labels
Always horizontal for polygon labels
比如:
labelDefinition.setPlacement(LabelingPlacement.POLYGON_ALWAYS_HORIZONTAL);
- 5、其它方法
二、LabelDefinition 的创建
LabelDefinition labelDefinition = new LabelDefinition(arcadeLabelExpression, textSymbol);
三、指定图层定义标签设置
layer.getLabelDefinitions().add(labelDefinition);
四、完整代码
// create text symbol for styling the label
TextSymbol textSymbol = new TextSymbol();
textSymbol.setSize(12);
textSymbol.setColor(Color.WHITE);
//指定显示的字段
ArcadeLabelExpression arcadeLabelExpression =
new ArcadeLabelExpression("$feature.party");
//构造 LabelDefinition
LabelDefinition labelDefinition = new LabelDefinition(arcadeLabelExpression, textSymbol);
//SQL条件方式过滤数据 labelDefinition.setWhereClause(String.format("PARTY = '%s'", party));
//标签显示方式 labelDefinition.setPlacement(LabelingPlacement.POLYGON_ALWAYS_HORIZONTAL);
//指定图层设置labelDefinition
layer.getLabelDefinitions().add(labelDefinition);
arcgis官方相关英文文档参考:
https://developers.arcgis.com/android/styles-and-data-visualization/add-labels/
如果有一起使用arcgis的朋友(或想学习arcgis的朋友),可以相互多交流。