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的文件信息格式可参考下图:

json文件

现在你已经学会如何添加标注至三维场景中,其余功能请查看详细的API文档和相关示例。

results matching ""

    No results matching ""