BaseGraphic

new mars3d.graphic.BaseGraphic(options)

矢量数据 基础类

参数名称 类型 描述信息
options object

参数对象,包括以下:

参数名称 类型 默认值 描述信息
position LngLatPoint | Cesium.Cartesian3 | Array.<number>

【点状】矢量数据时的坐标位置,具体看子类实现

positions Array.<LngLatPoint> | Array.<Cesium.Cartesian3> | Array

【线面状(多点)】矢量数据时的坐标位置,具体看子类实现

style object

矢量数据的 样式信息,具体见各GraphicType子类矢量数据的style参数。

attr object 可选

矢量数据的 属性信息,可以任意附加属性。

popup string | Array | function 可选

绑定的popup弹窗值,也可以bindPopup方法绑定

popupOptions Popup.StyleOptions 可选

popup弹窗时的配置参数,也支持如pointerEvents等Popup构造参数

tooltip string | Array | function 可选

绑定的tooltip弹窗值,也可以bindTooltip方法绑

tooltipOptions Tooltip.StyleOptions 可选

tooltip弹窗时的配置参数,也支持如pointerEvents等Tooltip构造参数

contextmenuItems object 可选

当矢量数据支持右键菜单时,也可以bindContextMenu方法绑定

script string 可选

用于矢量对象加载后执行的js脚本,提示:目前主要是Studio平台绑定自定义脚本使用

id string | number createGuid() 可选

矢量数据id标识

pid string | number 可选

图层父级的id,一般列表树管理中使用

name string 可选

矢量数据名称

show boolean true 可选

矢量数据是否显示

eventParent BaseClass | boolean 可选

指定的事件冒泡对象,默认为所加入的图层对象,false时不冒泡

allowDrillPick boolean | function 可选

是否允许鼠标穿透拾取

flyTo boolean 可选

加载完成数据后是否自动飞行定位到数据所在的区域。

flyToOptions object 可选

加载完成数据后是否自动飞行定位到数据所在的区域的对应 BaseGraphic#flyTo方法参数。

参考:

继承

成员(属性)

allowDrillPick : boolean|function

是否允许鼠标穿透拾取

attr : object

属性信息

availability : Cesium.TimeIntervalCollection

指定时间范围内显示该对象 [提示:仅部分子类实现,非所有对象都支持]

使用示例:
// 普通传值方式,多个【建议】
graphic.availability = [
  { start: "2017-08-25 08:00:00", stop: "2017-08-25 08:01:20", isStartIncluded: true, isStopIncluded: false },
  { start: "2017-08-25 09:00:00", duration: 10 } //支持不配置stop,直接配置duration秒数时长
]
// 也支持相对时间的 秒数 传值(相对于map.clock.startTime)
graphic.availability = [
  { start: 0, stop: 10, isStartIncluded: true, isStopIncluded: false },
  { start:30, duration: 10 } //支持不配置stop,直接配置duration秒数时长
]

// 普通传值方式,单个
graphic.availability = { start: "2017-08-25 08:00:00", stop: "2017-08-25 08:01:20", isStartIncluded: true, isStopIncluded: false }

// cesium原生写法, 多个
graphic.availability = new Cesium.TimeIntervalCollection([
  new Cesium.TimeInterval({
    start: Cesium.JulianDate.fromDate(new Date("2017-08-25 08:00:00")),
    stop: Cesium.JulianDate.fromDate(new Date("2017-08-25 08:00:20")),
    isStartIncluded: true,
    isStopIncluded: false
  }),
])

// cesium原生写法,单个
graphic.availability = new Cesium.TimeInterval({
  start: Cesium.JulianDate.fromDate(new Date("2017-08-25 08:00:00")),
  stop: Cesium.JulianDate.fromDate(new Date("2017-08-25 08:00:20")),
  isStartIncluded: true, //等于start时,是否显示
  isStopIncluded: false  //等于stop时,是否显示
})

readonly center : Cesium.Cartesian3|Cesium.SampledPositionProperty

中心点坐标(笛卡尔坐标)

readonly centerPoint : LngLatPoint

中心点坐标

readonly czmObject : Cesium.Entity|Cesium.Primitive|Cesium.GroundPrimitive|Cesium.ClassificationPrimitive|*

矢量数据对应的 Cesium内部对象 (不同子类中实现)

readonly ellipsoid : Cesium.Ellipsoid

当前地图的ellipsoid

enabledEvent : boolean

设置事件的启用和禁用状态

readonly fixedFrameTransform : Cesium.Transforms.LocalFrameToFixedFrame

从参考系到所提供椭球体的固定参考系的4x4变换矩阵

readonly hasAjaxAttr : boolean

是否 后端动态属性

readonly hasAjaxPostion : boolean

是否 后端动态坐标

readonly hasCluster : boolean

是否支持聚合

hasEdit : boolean

是否判断内部是否允许编辑(可外部传入禁用编辑,但不允许编辑的对象传入是无效的)

readonly hasOpacity : boolean

是否可以调整透明度

readonly id : string|number

对象的id标识

readonly isAdded : boolean

是否已添加到图层

readonly isCluster : boolean

是否被聚合

readonly isDestroy : boolean

是否已经销毁了

readonly isPoint : boolean

是否为点状数据 true: 点状,有position坐标 false:线面,有positions坐标

readonly isPrivate : boolean

是否Mars3D内部的私有对象,如标绘拖拽点等

name : string

名称

readonly options : object

当前类的构造参数

继承自:

pid : string|number

对象的pid标识

show : boolean

显示隐藏状态(属性值)

readonly state : State

当前对象的状态

style : object

样式信息

readonly type : string

矢量数据类型

方法

abstract _addedHook(style)void

对象添加到图层上的创建钩子方法, 每次add时都会调用

参数名称 类型 描述信息
style object

完整样式信息

返回值:

abstract _mountedHook()void

对象添加到图层前创建一些对象的钩子方法, 只会调用一次

返回值:

abstract _removedHook()void

对象从图层上移除的创建钩子方法, 每次remove时都会调用

返回值:

addEventParent(obj)BaseClass

添加抛出事件到父类,它将接收传播的事件

参数名称 类型 描述信息
obj object

父类对象

返回值:

当前对象本身,可以链式调用

继承自:

addTo(layer)BaseGraphic|*

添加到图层上,同 layer.addGraphic

参数名称 类型 描述信息
layer GraphicLayer

图层对象

返回值:

当前对象本身,可以链式调用

bindContextMenu(content, options)BaseGraphic|*

绑定右键菜单

参数名称 类型 默认值 描述信息
content Array.<object>

右键菜单配置数组,数组中每一项包括:

参数名称 类型 描述信息
text string | function 可选

菜单文字

icon string 可选

图标,可以是:图片url路径、base64字符串、svg字符串、字体图标class名

show function | boolean 可选

菜单项是否显示的回调方法

callback function 可选

菜单项单击后的回调方法

children Array.<object> 可选

当有二级子菜单时,配置数组。

options object {} 可选

控制参数

参数名称 类型 描述信息
offsetX number 可选

用于非规则对象时,横向偏移的px像素值

offsetY number 可选

用于非规则对象时,垂直方向偏移的px像素值

返回值:

当前对象本身,可以链式调用

使用示例:
graphic.bindContextMenu([
        {
          text: '删除对象',
          icon: 'fa fa-trash-o',
          callback: function (e) {
            let graphic = e.graphic
            if (graphic) {
              graphic.remove()
            }
          },
        },
      ])

bindHighlight(options)void

绑定鼠标移入或单击后的 对象高亮

参数名称 类型 描述信息
options object

高亮的样式,具体见各GraphicType矢量数据的style参数。

参数名称 类型 描述信息
type string 可选

事件类型,默认为鼠标移入高亮,也可以指定'click'单击高亮.

返回值:

bindPickId(item)BaseGraphic|*

绑定Cesium内部对象进行相关管理。

参数名称 类型 描述信息
item *

Cesium对象

返回值:

当前对象本身,可以链式调用

bindPopup(content, options)BaseGraphic|*

绑定鼠标单击对象后的弹窗。

参数名称 类型 描述信息
content string | function

弹窗内容html字符串,或者回调方法。

options Popup.StyleOptions 可选

控制参数

返回值:

当前对象本身,可以链式调用

bindTooltip(content, options)BaseGraphic|*

绑定鼠标移入的弹窗

参数名称 类型 描述信息
content string | function

弹窗内容html字符串,或者回调方法。

options Tooltip.StyleOptions 可选

控制参数

返回值:

当前对象本身,可以链式调用

clearAjaxPostion()void

清除 后端动态坐标

返回值:

closeContextMenu()BaseGraphic|*

关闭右键菜单

返回值:

当前对象本身,可以链式调用

closePopup()BaseGraphic|*

关闭弹窗

返回值:

当前对象本身,可以链式调用

closeSmallTooltip()BaseGraphic|*

关闭小提示窗

返回值:

当前对象本身,可以链式调用

closeTooltip()BaseGraphic|*

关闭弹窗

返回值:

当前对象本身,可以链式调用

destroy(noDel)void

销毁当前对象

参数名称 类型 默认值 描述信息
noDel boolean false 可选

false:会自动delete释放所有属性,true:不delete绑定的变量

返回值:

继承自:

enableControl(value)void

启用或禁用所有内部控件(含tooltip、popup、contextmenu)

参数名称 类型 描述信息
value boolean

是否启用

返回值:

fire(type, data, propagate)BaseClass

触发指定类型的事件。

参数名称 类型 描述信息
type EventType | string

事件类型

data object 可选

传输的数据或对象,可在事件回调方法中event对象中获取进行使用

propagate BaseClass 可选

将事件传播给父类 (用addEventParent设置)

返回值:

当前对象本身,可以链式调用

继承自:

flyTo(options)Promise.<boolean>

飞行定位至 数据所在的视角

参数名称 类型 默认值 描述信息
options object {} 可选

参数对象:

参数名称 类型 默认值 描述信息
radius number 可选

点状数据时,相机距离目标点的距离(单位:米)

scale number 1.2 可选

线面数据时,缩放比例,可以控制视角比矩形略大一些,这样效果更友好。

minHeight number 可选

定位时相机的最小高度值,用于控制避免异常数据

maxHeight number 可选

定位时相机的最大高度值,用于控制避免异常数据

heading number 可选

方向角度值,绕垂直于地心的轴旋转角度, 0至360

pitch number 可选

俯仰角度值,绕纬度线旋转角度, -90至90

roll number 可选

翻滚角度值,绕经度线旋转角度,-90至90

duration number 可选

飞行时间(单位:秒)。如果省略,SDK内部会根据飞行距离计算出理想的飞行时间。

complete Cesium.Camera.FlightCompleteCallback 可选

飞行完成后要执行的函数。

cancel Cesium.Camera.FlightCancelledCallback 可选

飞行取消时要执行的函数。

endTransform Cesium.Matrix4 可选

变换矩阵表示飞行结束时相机所处的参照系。

maximumHeight number 可选

飞行高峰时的最大高度。

pitchAdjustHeight number 可选

如果相机飞得比这个值高,在飞行过程中调整俯仰以向下看,并保持地球在视口。

flyOverLongitude number 可选

地球上的两点之间总有两条路。这个选项迫使相机选择战斗方向飞过那个经度。

flyOverLongitudeWeight number 可选

仅在通过flyOverLongitude指定的lon上空飞行,只要该方式的时间不超过flyOverLongitudeWeight的短途时间。

convert boolean true 可选

是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。

easingFunction Cesium.EasingFunction.Callback 可选

控制在飞行过程中如何插值时间。

返回值:

如果飞行成功则解析为true的承诺,如果当前未在场景中可视化目标或取消飞行,则为false的Promise

async getAjaxAttr()object

获取后端动态属性,当存在attr是动态属性配置时可用【attr.type === "ajax" && attr.url】

返回值:

实时获取当前的动态属性值

getAvailabilityJson()Array.<object>

获取时间范围的简单对象数组(转为相对map.clock.startTime的相对数字)

返回值:

时间对象列表

getAvailabilityShow(time)boolean

获取指定时间下的时序对应的 显示隐藏 状态

参数名称 类型 描述信息
time Cesium.JulianDate

指定时间

返回值:

显示隐藏 状态

getContextMenu(hasLayer)Array.<object>

获取绑定的右键菜单数组

参数名称 类型 默认值 描述信息
hasLayer boolean true 可选

是获取图层上的右键菜单

返回值:

右键菜单数组

getMaxHeight()number

获取数据的最大高度

返回值:

高度

getPopup()Popup

获取当前对象打开的Popup对象

返回值:

当前对象打开的Popup对象

getRealShow(time)boolean

获取当前对象真实实际的显示状态

参数名称 类型 描述信息
time Cesium.JulianDate 可选

当前时间,不传时不做availability判断

返回值:

真实的实时显示状态,当时序范围外,被聚合时返回的是false

getRectangle(options)Cesium.Rectangle|object

获取数据的矩形边界

参数名称 类型 描述信息
options boolean 可选

控制参数

参数名称 类型 默认值 描述信息
isFormat boolean false 可选

是否格式化,格式化时示例: { xmin: 73.16895, xmax: 134.86816, ymin: 12.2023, ymax: 54.11485 }

onePoint boolean true 可选

一个点位时是否返回边界值

返回值:

isFormat:true时,返回格式化对象,isFormat:false时返回Cesium.Rectangle对象

getTooltip()Tooltip

获取当前对象打开的Tooltip对象

返回值:

当前对象打开的Tooltip对象

hasContextMenu(hasLayer)boolean

是否有绑定的右键菜单

参数名称 类型 默认值 描述信息
hasLayer boolean true 可选

是否判断图层上的右键菜单

返回值:

是否有绑定

hasEventParent(obj)boolean

是否绑定了抛出事件到指定父类

参数名称 类型 描述信息
obj object

父类对象

返回值:

是否绑定了抛出事件

继承自:

hasPopup(hasLayer)boolean

是否存在Popup绑定

参数名称 类型 默认值 描述信息
hasLayer boolean true 可选

是否判断图层上的Popup

返回值:

是否存在Popup绑定

hasTooltip(hasLayer)boolean

是否绑定了tooltip

参数名称 类型 默认值 描述信息
hasLayer boolean true 可选

是否判断图层上的tooltip

返回值:

是否绑定

isInView(position, options)boolean

判断点坐标是否在球的背面 或当前视域屏幕内

参数名称 类型 描述信息
position Cesium.Cartesian3 可选

坐标

options object 可选

参数

参数名称 类型 默认值 描述信息
inWindow boolean false 可选

是否判断是否在屏幕内,默认不计算判断,可以按需开启

返回值:

是否后端动态坐标

listens(type, propagate)boolean

是否有绑定指定的事件

参数名称 类型 描述信息
type EventType | string

事件类型

propagate BaseClass 可选

是否判断指定的父类 (用addEventParent设置的)

返回值:

是否存在

继承自:

off(types, fn, context)BaseClass

解除绑定指定类型事件监听器

参数名称 类型 描述信息
types EventType | string | Array.<EventType> 可选

事件类型,未传值时解绑所有事件

fn function 可选

绑定的监听器回调方法,未传值时解绑所有指定类型对应事件,特殊说明:map.on监听的Cesium相关原生事件时必须传入该参数

context object 可选

侦听器的上下文(this关键字将指向的对象)。

返回值:

当前对象本身,可以链式调用

继承自:

on(types, fn, context)BaseClass

绑定指定类型事件监听器, 支持在监听中调用 event.stopPropagation(); 阻止事件冒泡

参数名称 类型 描述信息
types EventType | string | Array.<EventType> | Array.<string> | object

事件类型

fn function

绑定的监听器回调方法

context object 可选

侦听器的上下文(this关键字将指向的对象)。

返回值:

当前对象本身,可以链式调用

继承自:

once(types, fn, context)BaseClass

绑定一次性执行的指定类型事件监听器 与on类似,监听器只会被触发一次,然后被删除。

参数名称 类型 描述信息
types EventType | string | Array.<EventType>

事件类型

fn function

绑定的监听器回调方法

context object 可选

侦听器的上下文(this关键字将指向的对象)。

返回值:

当前对象本身,可以链式调用

继承自:

openContextMenu(position)BaseGraphic|*

打开右键菜单

参数名称 类型 默认值 描述信息
position Cesium.Cartesian3 this.center 可选

矢量对象 或 显示的位置

返回值:

当前对象本身,可以链式调用

openPopup(position, event)BaseGraphic|*

打开绑定的弹窗

参数名称 类型 默认值 描述信息
position LngLatPoint | Cesium.Cartesian3 | Array.<number> | * this.center 可选

矢量对象 或 显示的位置

event object 可选

用于抛出事件时的相关额外属性

返回值:

当前对象本身,可以链式调用

openSmallTooltip(position, message)BaseGraphic|*

显示小提示窗,一般用于鼠标操作的提示。

参数名称 类型 描述信息
position Cesium.Cartesian2 | Cesium.Cartesian3

显示的屏幕坐标位置 或 笛卡尔坐标位置

message *

显示的内容

返回值:

当前对象本身,可以链式调用

openTooltip(position, event)BaseGraphic|*

打开绑定的tooltip弹窗

参数名称 类型 默认值 描述信息
position LngLatPoint | Cesium.Cartesian3 | Array.<number> this.center 可选

显示的位置,默认为矢量对象所在点或中心点位置

event object 可选

用于抛出事件时的相关额外属性

返回值:

当前对象本身,可以链式调用

remove(hasDestroy)void

从图层上移除,同 layer.removeGraphic

参数名称 类型 默认值 描述信息
hasDestroy boolean true 可选

是否调用destroy释放

返回值:

removeEventParent(obj)BaseClass

移除抛出事件到父类

参数名称 类型 描述信息
obj object

父类对象

返回值:

当前对象本身,可以链式调用

继承自:

setAjaxPostion(position)boolean

设置后端动态坐标,当存在点状对象是动态属性配置时可用【position.type === "ajax" && position.url)】

参数名称 类型 描述信息
position BaseGraphic.AjaxPosition

动态坐标配置

返回值:

是否后端动态坐标

setOpacity(value)void

设置整体透明度(globalAlpha值), 不是所有类型均支持,主要看数据类型和材质类型决定。 对象本身透明度请用 graphic.setStyle({ opacity: value })

参数名称 类型 描述信息
value number

透明度

返回值:

setOptions(options, funOptions)BaseGraphic|*

重新赋值参数,同构造方法参数一致。

参数名称 类型 描述信息
options object

参数,与类的构造方法参数相同

funOptions object 可选

方法参数

参数名称 类型 默认值 描述信息
merge boolean true 可选

是否合并参数, 如是完整覆盖不合并老的options,请传入fasle

返回值:

当前对象本身,可以链式调用

setStyle(newStyle, funOptions)BaseGraphic|*

设置 样式信息 的钩子方法

参数名称 类型 描述信息
newStyle object

本次更新的部分样式信息,内部会合并属性

funOptions object 可选

方法参数

参数名称 类型 默认值 描述信息
merge boolean true 可选

是否合并参数, 如是完整覆盖不合并老的options,请传入fasle

返回值:

当前对象本身,可以链式调用

toGeoJSON(options)object

将矢量数据导出为GeoJSON格式规范对象。

参数名称 类型 描述信息
options object 可选

参数对象:

参数名称 类型 描述信息
noAlt boolean 可选

不导出高度值

noStyle boolean 可选

不导出style样式,后期使用时在图层配置symbol

standard boolean 可选

不导出options等mars3d属性,仅导出坐标和attr属性的标准简洁GeoJSON

返回值:

GeoJSON格式规范对象

toJSON()object

将矢量数据的坐标、样式及属性等信息导出为对象,可以用于存储。

返回值:

导出的坐标、样式及属性等信息

unbindContextMenu(bubbling)BaseGraphic|*

解除绑定的右键菜单

参数名称 类型 默认值 描述信息
bubbling boolean false 可选

单击事件中是否继续冒泡查找

返回值:

当前对象本身,可以链式调用

unbindHighlight()void

解绑鼠标移入或单击后的高亮处理

返回值:

unbindPopup(bubbling)BaseGraphic|*

解除绑定的鼠标单击对象后的弹窗。

参数名称 类型 默认值 描述信息
bubbling boolean false 可选

单击事件中是否继续冒泡往上级查找

返回值:

当前对象本身,可以链式调用

unbindTooltip(bubbling)BaseGraphic|*

解除绑定的鼠标移入对象后的弹窗。

参数名称 类型 默认值 描述信息
bubbling boolean false 可选

单击事件中是否继续冒泡查找

返回值:

当前对象本身,可以链式调用

定义的类型

mars3d.graphic.BaseGraphic.AjaxAttr

【从后端读取的动态属性】 动态时SDK内判断规则: if (attr.type === "ajax" && attr.url) 动态属性仅Popup等使用时才会自动获取,如外部代码中需要使用时,请调用代码实时获取: let attr = await graphic.getAjaxAttr()

属性:
属性名称 类型 可选 默认值 描述信息
type string

类型,目前仅支持 "ajax"

url string

后端服务URL地址

queryParameters object <可选>

与请求一起发送的 URL 参数,例如 {id: 1987 }

headers object <可选>

一个对象,将发送的其他HTTP标头。比如:headers: { 'X-My-Header': 'valueOfHeader' }

dataColumn string <可选>

接口返回数据中,对应的属性数据所在的读取字段名称,支持多级(用.分割);如果数据直接返回时可以不配置。

cacheTime number <可选>
1

在time秒内再次访问读取时,直接使用上一次历史值,避免高频访问后端。

mars3d.graphic.BaseGraphic.AjaxPosition

【从后端读取的动态坐标】 动态时SDK内判断规则: if (position.type === "ajax" && position.url)

属性:
属性名称 类型 可选 默认值 描述信息
type string

类型,目前仅支持 "ajax"

url string

后端服务URL地址

queryParameters object <可选>

与请求一起发送的 URL 参数,例如 {id: 1987 }

headers object <可选>

一个对象,将发送的其他HTTP标头。比如:headers: { 'X-My-Header': 'valueOfHeader' }

dataColumn string <可选>

接口返回数据中,对应的属性数据所在的读取字段名称,支持多级(用.分割);如果数据直接返回时可以不配置。

latColumn string <可选>
"lat"

纬度值对应的字段名称, 如果数据内有position字段,position的优先级高于lngColumn

lngColumn string <可选>
"lng"

经度值对应的字段名称

altColumn string <可选>
"alt"

高度值对应的字段名称

time number <可选>

无配置时仅取值一次,有值时间隔time秒后不断取

mars3d.graphic.BaseGraphic.EventType

当前类支持的EventType事件类型

属性:
属性名称 类型 描述信息
add string

本身被添加

remove string

本身被移除

show string

显示了对象本身

hide string

隐藏了对象本身

updatePosition string

更新了坐标位置

updateStyle string

更新了style对象

updateAttr string

更新了attr对象

click string

左键单击 鼠标事件 【仅支持交互的相关对象内存在】

rightClick string

右键单击 鼠标事件

mouseOver string

鼠标移入 鼠标事件

mouseOut string

鼠标移出 鼠标事件

popupOpen string

popup弹窗打开后

popupClose string

popup弹窗关闭

tooltipOpen string

tooltip弹窗打开后

tooltipClose string

tooltip弹窗关闭

contextMenuOpen string

右键菜单 打开后

contextMenuClose string

右键菜单 关闭

contextMenuClick string

右键菜单 单击某一项后

highlightOpen string

highlight高亮后

highlightClose string

highlight关闭后

postRender string

每帧渲染 【仅DIV或Popup相关对象内存在】

drawStart string

开始绘制 标绘事件 【仅支持标绘的相关对象内存在】

drawMouseMove string

正在移动鼠标中,绘制过程中鼠标移动了点 标绘事件

drawAddPoint string

绘制过程中增加了点 标绘事件

drawRemovePoint string

绘制过程中删除了最后一个点 标绘事件

drawCreated string

创建完成 标绘事件

editStart string

开始编辑 标绘事件 【仅支持编辑的相关对象内存在】

editMouseDown string

移动鼠标按下左键(LEFT_DOWN)标绘事件

editMouseMove string

正在移动鼠标中,正在编辑拖拽修改点中(MOUSE_MOVE) 标绘事件

editMovePoint string

编辑修改了点(LEFT_UP)标绘事件

editRemovePoint string

编辑删除了点 标绘事件

editStyle string

图上编辑修改了相关style属性 标绘事件

editStop string

停止编辑 标绘事件

load string

相关数据或对象加载完成后【仅 ModelEntity、ModelPrimitive、DivGraphic 类及其子类部分对象存在】

stop string

模型addDynamicPosition添加的动态点,到时时间停止后触发【仅addDynamicPosition动态点时存在】

使用示例:
//绑定监听事件
graphic.on(mars3d.EventType.click, function (event) {
  console.log('单击了矢量数据对象', event)
})
参考: