2.7 标注上图
这一节我们学习如何在三维地图场景中添加标注。
聚合标注(LabelExObj)
聚合功能可以在聚合后统计配置范围内的标注数量,也能够避免标注过于密集的现象:
聚合前:
聚合后:
注意:LabelExObj仅限于文字标注使用,如果想同时具有图片的效果,可以在LabelExObj下的参数textSymbol文字符号里配置图标。
聚合标注相关参数说明:
labelIdArray:标注的标识id的数组,该标识id为用户自定义。
geoPosArray:标注的经纬度位置的数组。
infoArray:标注自定义信息数组,可以存放用户自定义的信息,但字符串长度不宜过长,可选择不配置该参数。
textArray:标注显示文字名称数组。
callback:标注拾取完成时回调事件。
isCluster:标注是否聚合显示,设为false则取消标注聚合效果。
clusterDistance:最小聚合显示距离,单位为“米”,在该高度下即开始聚合。
clusterRange:聚合显示范围。
textSymbol:文字符号。
普通标注(LabelObj)
该标注对象可分为三种类型:模型标注、文字标注、图片标注。
模型标注样式:
文字标注样式:
图片标注样式:
拿文字标注的创建、添加、删除举个例子。
在预先知道点位的情况下,可以在标注对象创建时,预设置参数:
var textLabel = new CooSDK.LabelObj({
//指定标注类型,这里是文字标注
labelType: CooSDK.EnumLabelType.LABEL_TEXT,
//设置点位的数组,这里为经纬度坐标的数组
geoPosArray: [
new CooSDK.PositionObj(120.218360866, 30.2102196798, 50.4588537607),
new CooSDK.PositionObj(120.218360866, 30.2102196798, 80.4588537607)],
//设置文字显示内容
textArray: ["测试性文字1", "测试性文字2"],
//设置标注的id,用来后期拾取辨别
labelIdArray: [1, 2],
infoArray: ["备注1", "备注2"]
});
添加点位可以这么写,可以支持单个或者批量的添加操作:
var pos = new CooSDK.PositionObj(120.218360866, 30.2102196798, 120.4588537607);
var text = "测试性文字3";
var id = 3;
textLabel.addChildTextLabel([pos], [text], [id], ["备注3"]);
删除点位则有多种方法,可以根据文字内容删除标注:
textLabel.removeChildLabelByText(["测试性文字1"]);
也可根据标注id删除标注:
textLabel.removeChildLabelById([2]);
亦或根据坐标点位删除标注:
var pos = new CooSDK.PositionObj(120.218360866, 30.2102196798, 120.4588537607);
textLabel.removeChildLabelByGeoPos([pos]);
还想删除全部标注:
textLabel = textLabel.destroy();
此外,如果标注体量庞大的话,我们也支持通过json文件来传入坐标信息,从而创建海量标注:
var jsonLabel = new CooSDK.LabelObj({
labelType: CooSDK.EnumLabelType.ICON,
iconSymbol: new CooSDK.IconSymbol({
url: gImagePath2,
}),
jsonInfo: "E:\\TEST.json"
})
json的文件信息格式可参考下图:
现在你已经学会如何添加标注至三维场景中,其余功能请查看详细的API文档和相关示例。