Mars3D框架 API文档 v2.1

在阅读API之前,您至少应该了解 Cesium 和 Mars3D ( MarsGIS for Cesium )框架.


创建Map

框架的核心静态方法,它用来在页面中创建地图.

使用示例

mars3d.createMap({
    id: 'cesiumContainer',
    url: "config.json",
    success: function (viewer, jsondata) {//地图成功加载完成后执行
        
    }
});查看运行效果 » 

创建地图

创建示例说明
mars3d.createMap(<MarsMap options> options)将地图部署在给定ID的DIV容器中,并设置地图的选项.

Options参数选项

Option参数参数类型默认值说明
idString必须传入地图Div容器的id。
urlStringurl或data参数必须有一个有值框架规定规范的地图配置信息的Json文件url地址(该json文件中有map3d节点)
dataObjecturl或data参数必须有一个有值框架规定规范的地图配置信息的Json文件Object对象(只需要类似config.json中的map3d节点数据即可)
successfunctionnull

地图创建完成后的回调函数.

success: function (viewer, jsondata) {
    //viewer    为Cesium规范的viewer地图对象
    //gisdata   为地图创建完成后的一些有用的对象集合,如控件、图层、配置等信息
    //jsondata  为url或data参数传入后读取到的json数据对象
}
serverURLString会替换图层中配置的url地址中的$serverURL$参数为该值,用于统一配置url中GIS服务器的ip和端口的变量,方便部署时修改ip。
***支持所有config.json中可以配置的属性 ,此处优秀级高于config.josn,会覆盖config.json中的设置。
Option参数参数类型默认值说明
***支持所有Cesium.Viewer的参数,具体请参阅 Cesium API

viewer扩展方法

实例化完成viewer后,会在viewer有扩展的一个静态类 viewer.mars.*, 该类是静态类,等价于mars3d.ViewerEx实体类,如果是外部自行构造的Viewer可以手动viewer.mars = new mars3d.ViewerEx进行绑定。 包含坐标转换、popup、tooltip、定位等方法或对象。

属性

属性名返回值说明
configObject

获取createMap时传入的url或data中的相关参数属性值。

keyboardRoamkeyboardRoam

键盘漫游对象。(详见后面keyboardRoam类介绍)

locationlocation

下侧 鼠标位置信息状态栏 对象。(详见后面location类介绍)

popuppopup

鼠标单击信息框处理类。(详见后面popup类介绍)

tooltiptooltip

鼠标悬浮提示信息框处理类。(详见后面tooltip类介绍)

contextmenucontextmenu

右键菜单管理类对象。(详见后面contextmenu类介绍)

contextmenuItems[Object]

右击地图时,右键菜单项 ,数组内部对应格式示例(children可以配置二级):

{
    text: '开启深度监测',
    iconCls: 'fa fa-eye-slash',
    visible: function () {//非必须,此属性回调来控制动态显示隐藏
        return !viewer.scene.globe.depthTestAgainstTerrain
    },
    calback: function (e) {//单击菜单后的事件回调
        viewer.scene.globe.depthTestAgainstTerrain = true;
    }
} 
defaultContextmenuItems [只读][Object]

内部绑定的默认右键菜单

draw [只读]mars3d.Draw

内部绑定的内置已经实例化的Draw对象,方便简单场景下使用绘制矢量对象

方法

方法名返回值说明
addOperationalLayer(Object options)BaseLayer图层

绑定图层管理,添加内部封装的BaseLayer图层到OperationalLayer进行图层控制

removeOperationalLayer(Number id)

移除图层控制

getCenter(Boolean isToWgs?)Object

提取屏幕中心点坐标,返回值示例:{ "y": 31.787488, "x": 117.222228, "z": 229 }。ps:同point类方法。

当地球是高德等gcj坐标时,isToWgs设置是否转换为wgs84坐标

getExtent(Object opts?)Object

获取当前地球的视域边界{xmin: 113.23422, xmax: 125.23452, ymin: 30.23436, ymax: 33.234252}。ps:同point类方法。

支持opts:{scale:缩放比例}

getCameraView(Boolean isToWgs?)Object

获取当前相机视角范围参数坐标值,返回值示例:{ "y": 31.787488, "x": 117.222228, "z": 224, "heading": 56, "pitch": -29, "roll": 45 }。ps:同point类方法。

当地球是高德等gcj坐标时,isToWgs设置是否转换为wgs84坐标

getSurfaceHeight( Cartesian3 position, Object opts)Cartesian3

获取坐标的贴地(或贴模型)高度,ps:同point类方法。

opts支持: 是否在has3dtiles:true , 是否异步 asyn:true 异步回调方法calback

//点贴地或贴模型(异步) 
position = viewer.mars.getSurfaceHeight(position, {
    asyn: true,     //是否异步求准确高度
    has3dtiles: true,   //是否先求贴模型上(无模型时改为false,提高效率)
    calback: function (newHeight, cartOld) { 
       
    }
}); 
flyTo( Entity entity,Object options?)

视角飞行定位到entiy处

options支持:scale控制线面数据边界的放大比例,radius控制点数据视距距离
viewer.mars.flyTo(entity, { scale: 0.5, radius: 1000 });
centerAt(Object centeropt,Object/Number options?)

地球定位至指定区域,相机切换到centeropt指定的参数位置

options为数字时,代表播放动画时长(秒) options为对象时,支持viewer.camera.flyTo所有参数
viewer.mars.centerAt({ "y": 19.999609, "x": 117.579843, "z": 2709521.51, "heading": 354.1, "pitch": -70.1, "roll": 0.1 });
centerAtArr(Array arr,function enfun?)

按arr数组顺序播放地球定位至指定区域,地球定位至指定区域。arr数组中单个对象除了centerAt支持的参数外,还支持:

duration:3, //时长,
stop:1, //两个视角中间停留秒数(默认1秒)
onStart:function, //视角切换播放前回调方法
onEnd:function, //视角切换播放后回调方法
centerPoint( Cartesian3 position,Object options?)

地球定位至指定区域,定位至position设置的目标点位置

options支持viewer.camera.flyToBoundingSphere所有参数
 viewer.mars.centerPoint(position, {
    radius: 5000,   //距离目标点的距离
    pitch: -50,     //相机方向
    duration: 4,    //动画时长
    complete: function (e) {//飞行完成回调方法
        
    }
}); 
cancelCenterAt()

取消centerAt等执行的飞行,停止视角切换

getConfig()Object

返回构造地球时传入的config.json配置信息的克隆后值

getLayer(String key, String keyname?)BaseLayer

根据指定字段值(默认名称name)获取指定图层,keyname可以定义id等,为配置信息的字段名,默认是name

getBasemap()BaseLayer

获取当前显示的底图

changeBasemap(String idorname)BaseLayer

根据config配置的id或name属性,更新显示指定的地图底图

hasTerrain()Boolean

是否有地形数据

updateTerrainProvider(Boolean isStkTerrain)

更新地形,参数传入是否显示地形

openFlyAnimation(Function endfun,Object centeropt?)

开场动画,动画播放地球飞行定位指指定区域(默认为config.josn中配置的视域)

viewer.mars.openFlyAnimation(function () {
    //动画播放完成后回调       
}); 
isFlyAnimation()Boolean

是否在调用了openFlyAnimation正在进行飞行动画

rotateAnimation(Function endfun,Number duration)

旋转地球动画,可以指定旋转的时长duration秒


viewer.mars.rotateAnimation(function () {
//动画播放完成后回调
},3);
getCrs()String

获取当前地图坐标系,值为gcj时表示是国测局偏移坐标

point2map({x:经度,y:纬度}){x:经度,y:纬度}

在不同坐标系情况下,转换“目标坐标值”至“地图坐标系”一致的坐标

point2wgs({x:经度,y:纬度}){x:经度,y:纬度}

在不同坐标系情况下 ,获取地图上的坐标后,转为wgs标准坐标系坐标值

keyboard(Boolean value,object speedRatio)void

根据value设置开启或关闭键盘漫游,speedRatio对应支持以下属性:

moveStep: 10, //平移步长 (米)。
dirStep: 25, //相机原地旋转步长,值越大步长越小。
rotateStep: 1.0, //相机围绕目标点旋转速率,0.3 - 2.0
minPitch: 0.1, //最小仰角 0 - 1
maxPitch: 0.95, //最大仰角 0 - 1
keyboardAuto(object speedRatio)void同keyboard,此方法按自动切换开启关闭键盘漫游
expImage(object opts)void导出场景图片,截图
viewer.mars.expImage({
    type:'image/jpeg',//图片类型,可以指定为png
    height: 300, //指定 高度 或 宽度(指定1种就行,对应的自动缩放)
    download: true,//是否自动下载保存图片文件
    calback: function (base64, size) {//回调

    }
});
destroy()void销毁释放对象

popup鼠标单击信息框

viewer.mars.popup该类是静态类。鼠标单击信息框处理类。

属性

属性参数类型说明
isOnlyboolean

是否唯一弹窗模式,默认true,传入false可以启用多弹窗。

enableboolean

是否禁用。

方法

方法名返回值说明
show(Entity entity, Cartesian3 cartesian)void

弹出popup信息框(entity需要有popup属性,其信息为绑定信息框内容的html信息)

entity.popup = {
    html: 'html', //可以是任意html
    anchor: [0, -25]//定义偏移像素值 [x, y]
}; 
viewer.mars.popup.show(entity, entity.position._value);
close(String entityid)void

关闭popup信息框,多弹窗模式,关闭指定id的弹窗,默认关闭所有

setEnable(Boolean value)

禁用或启用 popup弹窗功能

getEnable()Boolean

获取当前禁用或启用状态

destroy()void

释放销毁对象

tooltip鼠标提示信息

viewer.mars.tooltip该类是静态类。鼠标悬浮提示信息框处理类。

属性

属性参数类型说明
enableboolean

是否禁用。

方法

方法名返回值说明
show(Entity entity, Cartesian3 cartesian)

弹出tooltip信息框(entity需要有tooltip对象,其信息为绑定信息框内容的html信息)

entity.tooltip = {
    html: 'html', //可以是任意html
    anchor: [0, -25]//定义偏移像素值 [x, y]
}; 
viewer.mars.popup.show(entity, entity.position._value);
close()

关闭tooltip信息框

destroy()void

释放销毁对象

keyboardRoam键盘漫游

viewer.mars.keyboardRoam该类是静态类。键盘漫游(快捷键)处理类。

属性

属性参数类型说明
enableboolean

是否禁用。

方法

方法名返回值说明
bind(Object opts?)void

启用键盘漫游,可以传参重置默认参数

unbind()void

关闭键盘漫游

startMoveForward()void

不按键一直自动往前走,调用stopMoveForward停止。

stopMoveForward()void

停止自动往前走

startMoveBackward()void

不按键一直自动往后退,调用stopMoveBackward停止。

stopMoveBackward()void

停止自动往后退

startMoveRight()void

不按键一直自动往右走,调用stopMoveRight停止。

stopMoveRight()void

停止自动往右走

startMoveLeft()void

不按键一直自动往往左,调用stopMoveLeft停止。

stopMoveLeft()void

停止自动往左走

moveCamera(mars3d.KeyboardType type)void

相对于屏幕中心点进行移动或旋转

type示例: mars3d.KeyboardType.LEFT_ROTATE

rotateCamera(mars3d.KeyboardType type)void

相对于相机本身进行旋转

type示例: mars3d.KeyboardType.LEFT_ROTATE

destroy()void

释放销毁对象

location位置信息状态栏

viewer.mars.location该类是静态类。下侧 鼠标位置信息状态栏 处理类。

属性

属性参数类型说明
showboolean

是否显示状态栏。

方法

方法名返回值说明
css(Object css)void

设置状态栏的css。类同jquery的 $(dom).css(style)方法

destroy()void

销毁释放对象

contextmenu右键菜单

viewer.mars.contextmenu该类是静态类。右键菜单管理 处理类。

var defaultContextmenuItems = [
{
    text: '显示此处经纬度',
    iconCls: 'fa fa-info-circle',
    calback: function (e) {
        var mpt = mars3d.point.formatPosition(e.position);

        var inhtml = "经度:" + mpt.x + " , 纬度:" + mpt.y + "高程:" + mpt.z;
        haoutil.alert(inhtml, '位置信息');
    }
},
{
    text: '开启深度监测',
    iconCls: 'fa fa-eye-slash',
    visible: function () {
        return !viewer.scene.globe.depthTestAgainstTerrain
    },
    calback: function (e) {
        viewer.scene.globe.depthTestAgainstTerrain = true;
    }
},
{
    text: '关闭深度监测',
    iconCls: 'fa fa-eye',
    visible: function () {
        return viewer.scene.globe.depthTestAgainstTerrain
    },
    calback: function (e) {
        viewer.scene.globe.depthTestAgainstTerrain = false;
    }
},
{
    text: '视角切换',
    iconCls: 'fa fa-street-view',
    children: [
        {
            text: '第一视角站到此处',
            iconCls: 'fa fa-street-view',
            calback: function (e) {

                viewer.camera.flyTo({
                    destination: mars3d.point.addPositionsHeight(e.position, 10), //升高10米
                    orientation: {
                        heading: Cesium.Math.toRadians(0),    //绕垂直于地心的轴旋转
                        pitch: Cesium.Math.toRadians(10),      //绕纬度线旋转
                        roll: Cesium.Math.toRadians(0)        //绕经度线旋转
                    },
                });
            }
        },
        {
            text: '开启键盘漫游',
            iconCls: 'fa fa-keyboard-o',
            visible: function (e) {
                return !viewer.mars.keyboardRoam.enable
            },
            calback: function (e) {
                viewer.mars.keyboardRoam.enable = true;
            }
        },
        {
            text: '关闭键盘漫游',
            iconCls: 'fa fa-keyboard-o',
            visible: function (e) {
                return viewer.mars.keyboardRoam.enable
            },
            calback: function (e) {
                viewer.mars.keyboardRoam.enable = false;
            }
        },
        {
            text: '取消锁定',
            iconCls: 'fa fa-unlock-alt',
            visible: function (e) {
                return viewer.trackedEntity != undefined
            },
            calback: function (e) {
                viewer.trackedEntity = undefined;
            }
        },
    ]
}
]  
viewer.mars.contextmenuItems = defaultContextmenuItems; 

属性

属性参数类型说明
enableboolean

是否禁用右键菜单

方法

方法名返回值说明
resetDefault()void

右键菜单还原为默认的defaultContextmenuItems

close()void

关闭右键菜单,等同于单击了地图空白处

destroy()void

销毁释放对象

layer图层处理类

mars3d.layer该类是静态类。创建图层和图层相关处理类。

方法

方法名返回值说明
createLayer(Object item, Viewer Viewer, String serverURL)BaseLayer

平台内部创建图层,item为配置信息,具体参考配置信息手册

var layerWork = mars3d.layer.createLayer({
    "type": "3dtiles",
    "name": "厂房",
    "url": "http://data.marsgis.cn/3dtiles/qx-changfang/tileset.json",
    "maximumScreenSpaceError": 3,  
    "maximumMemoryUsage": 1024,
    "offset": { "z": -4 },
    "visible": true
}, viewer);
createImageryProvider(Object item, String serverURL)ImageryProvider

创建底图瓦片图层,item为配置信息,具体参考配置信息手册

var imageryProvider = mars3d.layer.createImageryProvider({
    "type": "tile",
    "url": "wgs3857img/{z}/{x}/{y}.jpg",
    "maximumLevel": 18
});
var imagelayer = new Cesium.ImageryLayer(imageryProvider, { alpha: 1 })
viewer.imageryLayers.add(imagelayer);
regLayerForConfig(String type, BaseLayer layerClass)

向框架内部注册自定义type类型的图层处理类

//注册到mars3d内部图层管理中:type为s3m时,实例化S3MLayer
mars3d.layer.regLayerForConfig("s3m", S3MLayer);
hasTerrain()Boolean

是否有地形数据

getEllipsoidTerrain()EllipsoidTerrainProvider

获取无地形的标准椭球体对象

getTerrainProvider(Object config)CesiumTerrainProvider

根据配置获取地形对象

//获取Cesium官方地形服务
viewer.terrainProvider = mars3d.layer.getTerrainProvider({
    type: 'ion'
});

//获取自定义的地形服务
viewer.terrainProvider = mars3d.layer.getTerrainProvider({
    "url": "http://data.marsgis.cn/terrain"
});

//获取arcgis地形服务
viewer.terrainProvider = mars3d.layer.getTerrainProvider({
    "type": "arcgis",
    "url": 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer'
});

BaseLayer图层控制基类

mars3d.layer.BaseLayer是实体类,是所有图层控制处理类的基类。

//方式1:直接使用,方便进行图层控制,如基础项目的 bindToLayerControl
var layer = new BaseLayer({
    pid: 30,
    name: '企业',
    mydata:null, //自行赋值
    visible: true,
    onAdd: function () {//显示回调
        //这里把数据this.mydata添加到地图上  
    },
    onRemove: function () {//隐藏回调
        //这里把数据this.mydata从地图上移除 
        
    },
    onCenterAt: function (duration) {//定位回调
        
    },
}, viewer);

//方式2:继承后扩展使用,下面示例的是超图S3M 三维模型图层加载
var S3MLayer = mars3d.layer.BaseLayer.extend({
    //代码省略,具体参考 https://github.com/marsgis/mars3d-supermap/blob/master/js/layer/S3MLayer.js
    add: function () {
         
    },
    remove: function () {
   
    },  
}); 
//注册到mars3d内部图层管理中:type为s3m时,实例化S3MLayer
mars3d.layer.regLayerForConfig("supermap_s3m", S3MLayer);

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

子类继承使用的方法

方法名返回值说明
create()Boolean

创建图层时会自动调用该方法

add()Boolean

将图层实例并添加到地图上

remove()Boolean

将图层实例从地图上移除

hasOpacityBoolean属性

该图层是否可以设置透明度

hasZIndexBoolean属性

该图层是否可以调整层级顺序

外部可调用的方法

方法名返回值说明
setVisible(Boolean value)

设置图层可见性

getVisible()Boolean

获取图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

destroy()

销毁对象

TileLayer瓦片底图

mars3d.layer.TileLayer是实体类,瓦片图层处理类,继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
layerImageryLayer

图层

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

GltfLayer小模型

mars3d.layer.GltfLayer是实体类, gltf三维模型处理图层,继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
modelModelGraphics

model entity对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

Tiles3dLayer三维模型

mars3d.layer.Tiles3dLayer是实体类, 3dtiles三维模型处理图层,继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
modelCesium3DTileset

Cesium3DTileset图层对象

originalCenterObject

中心位置

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

GeoJsonLayer GeoJson格式数据

mars3d.layer.GeoJsonLayer是实体类, GeoJson格式数据处理图层,继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceGeoJsonDataSource

GeoJsonDataSource图层对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

ArcFeatureLayer ArcGIS矢量服务

mars3d.layer.ArcFeatureLayer是实体类, arcgis 矢量数据服务 处理图层(一次性全部加载,适合少量数据时),继承自mars3d.layer.GeoJsonLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceGeoJsonDataSource

GeoJsonDataSource图层对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

KmlLayer KML格式数据

mars3d.layer.KmlLayer是实体类, KML格式数据处理图层 处理图层,继承自mars3d.layer.GeoJsonLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceKmlDataSource

KmlDataSource图层对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

CzmlLayer CZML格式数据

mars3d.layer.CzmlLayer是实体类, CZML格式数据处理图层 处理图层,继承自mars3d.layer.GeoJsonLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceCzmlDataSource

CzmlDataSource图层对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

TerrainLayer 地形图层

mars3d.layer.TerrainLayer是实体类, 地形管理(地球对象有且仅有一个地形图层),继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
terrainCesiumTerrainProvider

CesiumTerrainProvider图层对象

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

CustomFeatureGridLayer 分块加载图层基类

mars3d.layer.CustomFeatureGridLayer是实体类, 按类似瓦片规则动态分块加载视域内矢量数据,公共基类,继承自mars3d.layer.BaseLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceCustomDataSource

用于存储管理图层内所有entity对象集合

primitivesPrimitiveCollection

用于存储管理图层内所有primitive对象集合

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

用于子类继承的方法

方法名返回值说明
getDataForGrid(Object opts,Function calback)void

获取网格内的数据(opts包含具体网格信息),calback为回调方法,calback参数传回数据数组

createEntity(Object opts,Object attributes,Function calback?)Entity

根据数据创造entity,opts为当前网格信息,attributes为getDataForGrid返回的数组中单个对象,calback在异步构造时,调用回调,返回entity

updateEntity(Entity entity,Object attributes)void

更新entity(动态数据时有用),entity为图层中对应id的历史对象,attributes为getDataForGrid返回的数组中单个对象

removeEntity(Entity entity)void

移除entity,需要特殊处理时可以重写。entity为图层中对应id的历史对象,attributes为getDataForGrid返回的数组中单个对象

方法

方法名返回值说明
reload()void

重新加载数据

getLength()Number

当前图层内所有矢量对象的数量

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

ArcGIS矢量服务分块加载图层

该类在插件不在mars3d.js主库中,在单独的插件mars3d-esri.js文件内。

mars3d.layer.ArcFeatureGridLayer是实体类, arcgis 矢量数据服务分块加载处理图层(按瓦片加载当前视域内数据,适合大量数据时),继承自mars3d.layer.CustomFeatureGridLayer

Options参数选项

Option参数参数类型默认值说明
其他参考 配置项手册

属性

属性参数类型说明
dataSourceCustomDataSource

用于存储管理图层内所有entity对象集合

primitivesPrimitiveCollection

用于存储管理图层内所有primitive对象集合

属性参数类型说明
configObject

config.json中图层配置信息

viewerViewer

方法

方法名返回值说明
reload()void

重新加载数据

getLength()Number

当前图层内所有矢量对象的数量

方法名返回值说明
getVisible()

获取图层可见性

setVisible(Boolean value)

设置图层可见性

centerAt(Number duration)

定位至数据区域,duration参数为动画时间,默认3秒;0表示没有动画;

setOpacity(Number value)

设置透明度

setZIndex(Number value)

设置叠加顺序

Draw标绘类

mars3d.Draw是实体类,标绘控制处理类,提供文字、点、线、面、立体、模型等各类entity对象的绘制。

使用示例


var  drawControl = new mars3d.Draw(viewer, {hasEdit: true });
//标绘文字
drawControl.startDraw({
    type: "label",
    style: {
        text: "火星科技三维地球",
        color: "#0081c2",
        font_size: 50,
        border: true,
        border_color: "#ffffff",
        border_width: 2
    },
    success: function (entity) {
        //简单绘制时,绘制完成后回调,更多复杂回调可以注册事件监听
    }
});

//事件监听(可以自行加相关代码实现业务需求,此处主要做示例)
drawControl.on(mars3d.draw.event.DrawStart, function (e) {
    console.log('开始绘制');
}); 
drawControl.on(mars3d.draw.event.DrawAddPoint, function (e) {
    console.log('绘制过程中增加了点');
});
drawControl.on(mars3d.draw.event.DrawRemovePoint, function (e) {
    console.log('绘制过程中删除了点');
});
drawControl.on(mars3d.draw.event.DrawCreated, function (e) {
    console.log('创建完成');
});
drawControl.on(mars3d.draw.event.EditStart, function (e) {
    console.log('开始编辑');
});
drawControl.on(mars3d.draw.event.EditMovePoint, function (e) {
    console.log('编辑修改了点');
});
drawControl.on(mars3d.draw.event.EditRemovePoint, function (e) {
    console.log('编辑删除了点');
});
drawControl.on(mars3d.draw.event.EditStop, function (e) {
    console.log('停止编辑');
}); 
drawControl.on(mars3d.draw.event.Delete, function (e) {  
    console.log('删除了对象');
});

创建对象

创建示例说明
mars3d.Draw(Viewer Viewer,<Draw options> options)根据相关参数创建一个标绘控制器

Options参数选项

Option参数参数类型默认值说明
hasEditBooleanfalse是否可以编辑
nameTooltipBooleantrue是否在不可编辑状态时将 name名称 属性 绑定到tooltip
removeScreenSpaceEventBooleantrue是否移除Cesium内部的双击事件,因为会影响标绘的事件交互。默认true,为true时,内部会执行:

viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

startDraw Options参数选项

startDraw方法内参数值attribute说明,主要设置有type和style属性。
支持success:function(entity){ }标绘完成后的回调方法,适用于一些简单场景下,复杂的可以执行on方法用事件去监听。
完整的Options参数请参考基础项目或marsv示例的widgets\plotAttr\config\attr.json文件
名称参数
文字
{
    "type": "label", 
    "style": {
        "text": "文字",      //内容  
        "color": "#ffffff",      //颜色  
        "opacity": 1,      //透明度  
        "font_family": "楷体",      //字体  
        "font_size": 30,      //字体大小  
        "border": true,      //是否衬色  
        "border_color": "#000000",      //衬色颜色  
        "border_width": 3,      //衬色宽度  
        "background": false,      //是否背景  
        "background_color": "#000000",      //背景颜色  
        "background_opacity": 0.5,      //背景透明度  
        "font_weight": "normal",      //是否加粗  
        "font_style": "normal",      //是否斜体  
        "scaleByDistance": false,      //是否按视距缩放  
        "scaleByDistance_far": 1000000,      //上限  
        "scaleByDistance_farValue": 0.1,      //比例值  
        "scaleByDistance_near": 1000,      //下限  
        "scaleByDistance_nearValue": 1,      //比例值  
        "distanceDisplayCondition": false,      //是否按视距显示  
        "distanceDisplayCondition_far": 10000,      //最大距离  
        "distanceDisplayCondition_near": 0,      //最小距离  
        "clampToGround": false,      //是否贴地  
        "visibleDepth": true,      //是否被遮挡
    }
}
点标记
{
    "type": "point", 
    "style": {
        "pixelSize": 10,      //像素大小  
        "color": "#3388ff",      //颜色  
        "opacity": 1,      //透明度  
        "outline": true,      //是否边框  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "outlineWidth": 2,      //边框宽度  
        "scaleByDistance": false,      //是否按视距缩放  
        "scaleByDistance_far": 1000000,      //上限  
        "scaleByDistance_farValue": 0.1,      //比例值  
        "scaleByDistance_near": 1000,      //下限  
        "scaleByDistance_nearValue": 1,      //比例值  
        "distanceDisplayCondition": false,      //是否按视距显示  
        "distanceDisplayCondition_far": 10000,      //最大距离  
        "distanceDisplayCondition_near": 0,      //最小距离  
        "clampToGround": false,      //是否贴地  
        "visibleDepth": true,      //是否被遮挡  

    }
}
图标点标记
{
    "type": "billboard", 
    "style": {
        "image": "img/marker.png",      //图标  
        "opacity": 1,      //透明度  
        "scale": 1,      //大小比例  
        "rotation": 0,      //旋转角度  
        "horizontalOrigin": "CENTER",      //横向对齐  
        "verticalOrigin": "BOTTOM",      //垂直对齐  
        "scaleByDistance": false,      //是否按视距缩放  
        "scaleByDistance_far": 1000000,      //上限  
        "scaleByDistance_farValue": 0.1,      //比例值  
        "scaleByDistance_near": 1000,      //下限  
        "scaleByDistance_nearValue": 1,      //比例值  
        "distanceDisplayCondition": false,      //是否按视距显示  
        "distanceDisplayCondition_far": 10000,      //最大距离  
        "distanceDisplayCondition_near": 0,      //最小距离  
        "clampToGround": false,      //是否贴地  
        "visibleDepth": true,      //是否被遮挡  

    }
}
模型
{
    "type": "model", 
    "style": {
        "modelUrl": "",      //路径  
        "scale": 1,      //比例  
        "heading": 0,      //方向角  
        "pitch": 0,      //俯仰角  
        "roll": 0,      //翻滚角  
        "fill": false,      //是否填充  
        "color": "#3388ff",      //颜色  
        "opacity": 1,      //透明度  
        "silhouette": false,      //是否轮廓  
        "silhouetteColor": "#ffffff",      //轮廓颜色  
        "silhouetteSize": 2,      //轮廓宽度  
        "silhouetteAlpha": 0.8,      //轮廓透明度  
        "clampToGround": false,      //是否贴地  

    }
}
线
{
    "type": "polyline", 
    "style": {
        "lineType": "solid",      //线型  
        "animationDuration": 1000,      //速度  
        "animationImage": "img/textures/lineClr.png",      //图片  
        "color": "#3388ff",      //颜色  
        "width": 4,      //线宽  
        "clampToGround": false,      //是否贴地  
        "outline": false,      //是否衬色  
        "outlineColor": "#ffffff",      //衬色颜色  
        "outlineWidth": 2,      //衬色宽度  
        "opacity": 1,      //透明度  
        "zIndex": 0,      //层级顺序  

    }
}
管道线
{
    "type": "polylineVolume", 
    "style": {
        "color": "#00FF00",      //颜色  
        "radius": 10,      //半径  
        "shape": "pipeline",      //形状  
        "outline": false,      //是否衬色  
        "outlineColor": "#ffffff",      //衬色颜色  
        "opacity": 1,      //透明度  

    }
}
墙体
{
    "type": "wall", 
    "style": {
        "extrudedHeight": 50,      //墙高  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "animationDuration": 1000,      //速度  
        "animationImage": "img/textures/fence.png",      //图片  
        "animationRepeatX": 1,      //重复数量  
        "animationAxisY": false,      //竖直方向  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#00FF00",      //颜色  
        "opacity": 0.6,      //透明度  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
    }
}
走廊
{
    "type": "corridor", 
    "style": {
        "height": 0,      //高程  
        "width": 100,      //走廊宽度  
        "cornerType": "ROUNDED",      //顶点样式  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "color": "#3388ff",      //颜色  
        "opacity": 0.6,      //透明度  
        "clampToGround": false,      //是否贴地  
        "zIndex": 0,      //层级顺序  
        "extrudedHeight": 50,      //拉伸高度  
    }
}
{
    "type": "polygon", 
    "style": {
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#3388ff",      //颜色  
        "opacity": 0.6,      //透明度  
        "stRotation": 0,      //填充方向  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "clampToGround": false,      //是否贴地  
        "zIndex": 0,      //层级顺序  
        "extrudedHeight": 100,      //拉伸高度  
    }
}
矩形
{
    "type": "rectangle", 
    "style": {
        "height": 0,      //高程  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#3388ff",      //颜色  
        "opacity": 0.6,      //透明度  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "rotation": 0,      //旋转角度  
        "stRotation": 0,      //材质角度  
        "clampToGround": false,      //是否贴地  
        "zIndex": 0,      //层级顺序  
        "extrudedHeight": 100,      //高度  
    }
}
{
    "type": "circle", 
    "style": {
        "radius": 100,      //半径  
        "height": 0,      //高程  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "animationDuration": 1000,      //速度  
        "animationCount": 1,      //圈数  
        "animationGradient": 0.1,      //圈间系数  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#3388ff",      //填充颜色  
        "opacity": 0.6,      //透明度  
        "stRotation": 0,      //填充方向  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "rotation": 0,      //旋转角度  
        "clampToGround": false,      //是否贴地  
        "zIndex": 0,      //层级顺序  
        "extrudedHeight": 100,      //拉伸高度  

    }
}
椭圆
{
    "type": "ellipse", 
    "style": {
        "semiMinorAxis": 100,      //短半径  
        "semiMajorAxis": 100,      //长半径  
        "height": 0,      //高程  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "animationDuration": 1000,      //速度  
        "animationCount": 1,      //圈数  
        "animationGradient": 0.1,      //圈间系数  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#3388ff",      //填充颜色  
        "opacity": 0.6,      //透明度  
        "stRotation": 0,      //填充方向  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "rotation": 0,      //旋转角度  
        "clampToGround": false,      //是否贴地  
        "zIndex": 0,      //层级顺序  
        "extrudedHeight": 100,      //拉伸高度  
    }
}
圆锥体
{
    "type": "cylinder", 
    "style": {
        "topRadius": 0,      //顶部半径  
        "bottomRadius": 100,      //底部半径  
        "length": 100,      //高度  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "animationDuration": 1000,      //速度  
        "animationCount": 1,      //圈数  
        "animationGradient": 0.1,      //圈间系数  
        "color": "#00FF00",      //填充颜色  
        "opacity": 0.6,      //透明度  
        "outline": false,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
    }
}
球体
{
    "type": "ellipsoid", 
    "style": {
        "extentRadii": 100,      //长半径  
        "widthRadii": 100,      //宽半径  
        "heightRadii": 100,      //高半径  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#00FF00",      //颜色  
        "opacity": 0.6,      //透明度  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度 
    }
}
平面
{
    "type": "plane", 
    "style": {
        "dimensionsX": 100,      //长度  
        "dimensionsY": 100,      //宽度  
        "plane_normal": "z",      //方向  
        "plane_distance": 0,      //偏移距离  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#00FF00",      //颜色  
        "opacity": 0.6,      //透明度  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "distanceDisplayCondition": false,      //是否按视距显示  
        "distanceDisplayCondition_far": 10000,      //最大距离  
        "distanceDisplayCondition_near": 0,      //最小距离  
    }
}
盒子
{
    "type": "box", 
    "style": {
        "dimensionsX": 100,      //盒子长度  
        "dimensionsY": 100,      //盒子宽度  
        "dimensionsZ": 100,      //盒子高度  
        "fill": true,      //是否填充  
        "fillType": "color",      //填充类型  
        "grid_lineCount": 8,      //网格数量  
        "grid_lineThickness": 2,      //网格宽度  
        "grid_cellAlpha": 0.1,      //填充透明度  
        "stripe_oddcolor": "#ffffff",      //条纹衬色  
        "stripe_repeat": 6,      //条纹数量  
        "checkerboard_oddcolor": "#ffffff",      //棋盘衬色  
        "checkerboard_repeat": 4,      //棋盘格数  
        "color": "#00FF00",      //颜色  
        "opacity": 0.6,      //透明度  
        "outline": true,      //是否边框  
        "outlineWidth": 1,      //边框宽度  
        "outlineColor": "#ffffff",      //边框颜色  
        "outlineOpacity": 0.6,      //边框透明度  
        "distanceDisplayCondition": false,      //是否按视距显示  
        "distanceDisplayCondition_far": 10000,      //最大距离  
        "distanceDisplayCondition_near": 0,      //最小距离  
        "clampToGround": false,      //是否贴地  
    }
}

方法

方法名返回值说明
startDraw(DrawStyle-option option)Entity

激活开始绘制

endDraw()this

外部控制,完成绘制,比如手机端无法双击结束

stopDraw()this

停止绘制

clearDraw()this

清除所有绘制,等同deleteAll

getCurrentEntity()Entity

获取当前编辑的要素

hasEdit(Boolean value)

设置是否在绘制完成后可以编辑修改entity

startEditing(Entity entity)

激活编辑entity

stopEditing()

停止编辑entity

updateAttribute(Object attribute,Entity entity?)Entity

修改的Entity的属性,entit为空时为当前正在编辑的对象

setPositions(Array positions,Entity entity?)Entity

修改Entity的坐标、高程,entit为空时为当前正在编辑的对象

deleteEntity(Entity entity?)

删除单个entity,entit为空时为当前正在编辑的对象。兼容remove方法名

deleteAll()

删除所有entity。 兼容removeAll方法名

toGeoJSON()String

转换所有标绘的Entity为geojson标准格式,用于保存

loadJson(GeoJson Object json,Object options)Entity[]

转换保存过的geojson数据为entity,并添加到Draw进行控制

options参数支持:{ clear: true, //是否清除, flyTo: true, //是否定位至数据所在视域 style: objcet //默认样式 }

addPoint(Array point,DrawStyle-option style)Entity

外部添加 billboard图标点 数据

var entity = viewer.mars.draw.addPoint([112.145,31.346], {
    "image": "img/marker.png",      //图标  
    "opacity": 1,      //透明度  
}); 
addPolyline(Array coords,DrawStyle-option style)Entity

外部添加 线 数据

//线坐标
var coordinates = [
    [116.069898, 31.303655],
    [116.098708, 31.322126]
];
var entity = viewer.mars.draw.addPolyline(coordinates, { "width": 3, "color": "#00ff00" });
                        
addPolygon(Array coords,DrawStyle-option style)Entity

外部添加 面 数据

//面坐标
var coordinates = [
    [116.069898, 31.303655],
    [116.098708, 31.322126],
    [116.108063, 31.311256],
    [116.079317, 31.292959]
];
var entity = viewer.mars.draw.addPolygon(coordinates, { "color": "#00ff00" });
                        
attributeToEntity(DrawStyle-option attribute,<Cartesian3 []> positions)Entity

通过属性和坐标,代码控制来生成entity(不是通过图上绘制的方式)

bindExtraEntity(<Entity> entity,DrawStyle-option attribute)Entity

绑定外部非Draw产生的entity到标绘进行编辑

setVisible(Boolean value)

设置所有绘制数据的可见性

hasDraw()Boolean

是否存在有绘制的entity

getEntityById(String id)Entity

获取指定id的实体对象(根据entity.attribute.attr.id校验)

getEntitys()Entity[]

获取所有绘制的实体对象列表

getDataSource()DataSource[]

获取内部保存绘制Entity的DataSource对象。

getCoordinates(Entity entity)[]

获取实体的经纬度坐标数组

getPositions(Entity entity)[]

获取实体的笛卡尔坐标数组

flyTo( Entity entity,Object options?)

视角飞行定位到entiy处

options支持:scale控制线面数据边界的放大比例,radius控制点数据视距距离
destroy()销毁释放对象
方法名返回值说明
on(<String> type, <Function> fn, <Object> context?)this

将一个监听器函数(fn)添加到对象的特定事件类型。您可以选择指定侦听器的context(该事件方法内的this关键字将指向的对象)。您还可以传递几个空格分隔的类型(例如'click dblclick')。

on(<Object> eventMap)this

添加一组类型/侦听器对,例如 {click: onClick, mousemove: onMouseMove}

off(<String> type, <Function> fn?, <Object> context?)this

删除以前添加的监听器功能。如果没有指定函数,它将从对象中删除该特定事件的所有侦听器。请注意,如果您传递了一个自定义context参数进行on,则必须传递相同的context参数off才能删除该侦听器。

off(<Object> eventMap)this

删除一组类型/侦听器对。

off()this

删除绑定到对象上的所有事件。

fire(<String> type, <Object> data?, <Boolean> propagate?)this

触发指定类型的事件。您可以选择提供数据对象 - 监听器函数的第一个参数将包含其属性。该事件可以可选地传播到事件的父级。

listens(<String> type)Boolean

如果特定事件类型具有附加的侦听器,则返回true。

once()this

on(…)类似,区别在于监听器只执行1次,并且执行后自动释放。

addEventParent(<Evented> obj)this

添加一个它的父级将接收传播的事件

removeEventParent(<Evented> obj)this

删除一个绑定的addEventParent事件,删除后它将停止接收传播的事件

addEventListener()this

on(…)的别名,兼容不同用户的命名习惯

removeEventListener()this

off(…)的别名,兼容不同用户的命名习惯

clearAllEventListeners()this

off()的别名,兼容不同用户的命名习惯

addOneTimeEventListener()this

once(…)的别名,兼容不同用户的命名习惯

fireEvent()this

fire(…)的别名,兼容不同用户的命名习惯

hasEventListeners()Boolean

listens(…)的别名,兼容不同用户的命名习惯

draw常用方法静态类

mars3d.draw.util 该类是静态类。绘制相关的常用工具方法集合。

方法

方法名返回值说明
getDefStyle(<String> type, <Object> style?)Object获取指定type的默认的标绘样式。
extend(<Object> dest, <Object> src?)Object将src对象(或多个对象)的属性合并到dest对象中并返回后者。
isArray(obj)Boolean兼容polyfill的 Array.isArray
indexOf(<Array> array, <Object> el)Number兼容polyfill的 Array.prototype.indexOf

event标绘事件类型

mars3d.draw.event 该类是静态类。主要是Draw可以使用的事件类型常量

常量

Event名称说明
DrawStart当 开始绘制 时触发。
DrawAddPoint当 绘制过程中增加了点 时触发。
DrawRemovePoint当 绘制过程中删除了点 时触发。
DrawMouseMove当 绘制过程中鼠标移动了点 时触发。
DrawCreated当 绘制结束创建完成 时触发。
EditStart当 开始编辑 时触发。
EditMovePoint当 编辑修改了点 时触发。
EditRemovePoint当 编辑删除了点 时触发。
EditStop当 停止编辑 时触发。
Delete当 删除了对象 时触发。

tooltip标绘鼠标提示

mars3d.draw.tooltip 该类是静态类。主要是Draw标绘过程中的鼠标提示信息,可以赋值后自定义设置提示文本。

提示信息 自定义设置

mars3d.draw.tooltip.draw.point.start = '单击 完成绘制';
mars3d.draw.tooltip.draw.polyline.start = '单击 开始绘制';
mars3d.draw.tooltip.draw.polyline.cont = '单击增加点,右击删除点';
mars3d.draw.tooltip.draw.polyline.end = '单击增加点,右击删除点<br />双击完成绘制';
mars3d.draw.tooltip.draw.polyline.end2 = '单击完成绘制';  //已到达最大点数时提示

mars3d.draw.tooltip.edit.start = '单击后 激活编辑';
mars3d.draw.tooltip.edit.end = '释放后 完成修改';

mars3d.draw.tooltip.dragger.def = '拖动 修改位置'; //默认拖拽时提示
mars3d.draw.tooltip.dragger.addMidPoint = '拖动 增加点';
mars3d.draw.tooltip.dragger.moveHeight = '拖动 修改高度';
mars3d.draw.tooltip.dragger.editRadius = '拖动 修改半径';
mars3d.draw.tooltip.dragger.editHeading = '拖动 修改方向';
mars3d.draw.tooltip.dragger.editScale = '拖动 修改缩放比例';

mars3d.draw.tooltip.del.def = '<br />右击 删除该点';
mars3d.draw.tooltip.del.min = '无法删除,点数量不能少于';

dragger拖拽点控制类

mars3d.draw.dragger 该类是静态类。主要是拖拽点控制处理。可以重新设置编辑时拖拽点颜色等。

编辑时拖拽点颜色 自定义设置

mars3d.draw.dragger.PointColor.Control = new Cesium.Color.fromCssColorString("#1c197d");          //位置控制拖拽点
mars3d.draw.dragger.PointColor.MoveHeight = new Cesium.Color.fromCssColorString("#9500eb");       //上下移动高度的拖拽点
mars3d.draw.dragger.PointColor.EditAttr = new Cesium.Color.fromCssColorString("#f73163");         //辅助修改属性(如半径)的拖拽点
mars3d.draw.dragger.PointColor.AddMidPoint = new Cesium.Color.fromCssColorString("#04c2c9").withAlpha(0.3);     //增加新点,辅助拖拽点

方法

方法名返回值说明
createDragger(CustomDataSource dataSource<Objcet> options)Point Entity

创建Dragger拖动点的公共方法

attr属性统一处理类

mars3d.draw.attr 该类是静态类。用于entity通用相关属性处理,不用判断entity类型,内部自动处理,是对后续其他单个指定类型entity的属性处理的进一步便捷封装。

方法

方法名返回值说明
getPositions(Entity entity)Cartesian3 []

获取entity的坐标

getCenterPosition(Entity entity)Cartesian3

获取entity的的中心点坐标

getCoordinates(Entity entity)Array []

获取entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将entity转换为GeoJSON对象,用于保存

style2Entity(<Objcet> style<Entity.billboard> entityattr?)Entity.billboard

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.billboard.style2Entity({image: "img/mark.png"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.billboard.style2Entity({image: "img/mark2.png"}, entity.billboard);

label对象属性处理类

mars3d.draw.attr.label 该类是静态类。用于label entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.label> entityattr?)Entity.label

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.label.style2Entity({text: "火星科技三维地球"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.label.style2Entity({text: "MarsGIS三维地球"}, entity.label);
getPositions(Entity entity)Cartesian3 []

获取label entity的坐标

getCoordinates(Entity entity)Array []

获取label entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将label entity转换为GeoJSON对象,用于保存

point对象属性处理类

mars3d.draw.attr.point 该类是静态类。用于point entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.point> entityattr?)Entity.point

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.point.style2Entity({color: "#ff0000"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.point.style2Entity({color: "#0000ff"}, entity.point);
getPositions(Entity entity)Cartesian3 []

获取point entity的坐标

getCoordinates(Entity entity)Array []

获取point entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将point entity转换为GeoJSON对象,用于保存

billboard对象属性处理类

mars3d.draw.attr.billboard 该类是静态类。用于billboard entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.billboard> entityattr?)Entity.billboard

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.billboard.style2Entity({image: "img/mark.png"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.billboard.style2Entity({image: "img/mark2.png"}, entity.billboard);
getPositions(Entity entity)Cartesian3 []

获取billboard entity的坐标

getCoordinates(Entity entity)Array []

获取billboard entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将billboard entity转换为GeoJSON对象,用于保存

model对象属性处理类

mars3d.draw.attr.model 该类是静态类。用于model entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.model> entityattr?)Entity.model

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.model.style2Entity({scale: 1});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.model.style2Entity({scale: 3}, entity.model);
getPositions(Entity entity)Cartesian3 []

获取model entity的坐标

getCoordinates(Entity entity)Array []

获取model entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将model entity转换为GeoJSON对象,用于保存

polyline对象属性处理类

mars3d.draw.attr.polyline 该类是静态类。用于polyline entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.polyline> entityattr?)Entity.polyline

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.polyline.style2Entity({color: "#ff0000"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.polyline.style2Entity({color: "#0000ff"}, entity.polyline);
getPositions(Entity entity)Cartesian3 []

获取polyline entity的坐标

getCoordinates(Entity entity)Array []

获取polyline entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将polyline entity转换为GeoJSON对象,用于保存

line2curve(Cartesian3 [] positions_draw)Cartesian3 []

坐标点数组 转为 贝塞尔曲线坐标点数组

polygon对象属性处理类

mars3d.draw.attr.polygon 该类是静态类。用于polygon entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.polygon> entityattr?)Entity.polygon

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.polygon.style2Entity({color: "#ff0000"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.polygon.style2Entity({color: "#0000ff"}, entity.polygon);
getPositions(Entity entity)Cartesian3 []

获取polygon entity的坐标

getCoordinates(Entity entity)Array []

获取polygon entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将polygon entity转换为GeoJSON对象,用于保存

ellipse对象属性处理类

mars3d.draw.attr.ellipse 该类是静态类。用于 圆及椭圆 ellipse entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.ellipse> entityattr?)Entity.ellipse

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.ellipse.style2Entity({color: "#ff0000"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.ellipse.style2Entity({color: "#0000ff"}, entity.ellipse);
getPositions(Entity entity)Cartesian3 []

获取ellipse entity的坐标

getCoordinates(Entity entity)Array []

获取ellipse entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将ellipse entity转换为GeoJSON对象,用于保存

getOutlinePositions(Entity entity<boolean> noAdd?<Number> count?)Cartesian3 []

获取圆对应的 边界 的坐标,noAdd标识是否闭合

count控制返回的点数量, 传入参数后共返回coutn*4个点,默认360个点

getOutlineCoordinates(Entity entity<boolean> noAdd?<Number> count?)Array []

获取圆对应的 边界 的坐标(geojson规范的格式),noAdd标识是否闭合

count控制返回的点数量, 传入参数后共返回coutn*4个点,默认360个点

rectangle对象属性处理类

mars3d.draw.attr.rectangle 该类是静态类。用于rectangle entity相关属性处理。

方法

方法名返回值说明
style2Entity(<Objcet> style<Entity.rectangle> entityattr?)Entity.rectangle

将style属性配置信息更新至entity对象中

//创建entity时
var addattr = mars3d.draw.attr.rectangle.style2Entity({color: "#ff0000"});
var entity = viewer.entities.add(addattr);

//更新entity时
mars3d.draw.attr.rectangle.style2Entity({color: "#0000ff"}, entity.rectangle);
getPositions(Entity entity)Cartesian3 []

获取rectangle entity的坐标

getCoordinates(Entity entity)Array []

获取rectangle entity的坐标(geojson规范的格式)

toGeoJSON(Entity entity)JSON Object

将rectangle entity转换为GeoJSON对象,用于保存

getOutlinePositions(Entity entity<boolean> noAdd?)Cartesian3 []

获取矩形对应的 四个顶点边界 的坐标 ,noAdd标识是否闭合

getOutlineCoordinates(Entity entity<boolean> noAdd?)Array []

获取矩形对应的 四个顶点边界 的坐标(geojson规范的格式),noAdd标识是否闭合

其他对象属性处理类

mars3d.draw.attr.**** 除了上面列举的外,其他entity均有对应的相关属性处理类,名称与entity对象相同。

雷达Entity

mars3d.RectangularSensorGraphics是实体类,提供自定义雷达效果的Entity对象展示。

使用示例

varsensorEntity = viewer.entities.add({
    position: position,
    orientation: Cesium.Transforms.headingPitchRollQuaternion(position, hpr), //同gltf的一样,设置方向
    rectangularSensor: new mars3d.RectangularSensorGraphics({
        radius: radius, //传感器的半径
        xHalfAngle: Cesium.Math.toRadians(xHalfAngle),  //传感器水平半角
        yHalfAngle: Cesium.Math.toRadians(yHalfAngle), //传感器垂直半角

        material: new Cesium.Color(0.0, 1.0, 1.0, 0.4),  //目前用的统一材质
        lineColor: new Cesium.Color(0.0, 1.0, 1.0, 1.0), //线的颜色

        showScanPlane: showScanPlane,  //是否显示扫描面
        scanPlaneColor: new Cesium.Color(0.0, 1.0, 1.0, 1.0), //扫描面颜色
        scanPlaneMode: 'vertical',  // 扫描面模式 垂直vertical/水平horizontal
        scanPlaneRate: 3,           //扫描速率,
        showThroughEllipsoid: false //此参数控制深度检测
    })
})

Options及属性选项

Option参数参数类型默认值说明
showbooleantrue是否显示
radiusNumber传感器的半径
xHalfAngleNumber传感器水平半角
yHalfAngleNumber传感器垂直半角
materialColor材质,一般传颜色
lineColorColor框线颜色
showScanPlanebooleantrue是否显示扫描面
scanPlaneColorColor扫描面颜色
scanPlaneModeStringvertical扫描面模式 垂直vertical/水平horizontal
scanPlaneRateNumber扫描速率
showThroughEllipsoidbooleantrue此参数控制深度检测,为false启用深度检测,可以解决雷达一半在地球背面时显示的问题
sliceNumber32切分程度
showSectorLinesbooleantrue是否显示扇面的线
showSectorSegmentLinesbooleantrue是否显示扇面和圆顶面连接的线
showLateralSurfacesbooleantrue是否显示侧面
lateralSurfaceMaterialColorundefined侧面材质(Material)
showDomeSurfacesbooleantrue是否显示圆顶表面
domeSurfaceMaterialColorundefined圆顶表面材质(Material)
showDomeLinesbooleantrue是否显示圆顶面线
showIntersectionbooleantrue是否显示与地球相交的线
intersectionColorColorColor.WHITE与地球相交的线的颜色
intersectionWidthNumber5.0与地球相交的线的宽度(像素)

Div点

mars3d.DivPoint是实体类,提供div点,用于自定义动态效果的点对象展示,div中可以绑定任意html。

使用示例

var divpoint = new mars3d.DivPoint(viewer, {
    html: "任意html",
    position: Cesium.Cartesian3.fromDegrees(118.810112, 31.231319),
    anchor: [0, 0],
    data: item, //item为需要绑定的数据
    click: function (e) {//单击后的回调 

    }
});

Options参数选项

Option参数参数类型默认值说明
htmlString绑定的html代码,一般为div
positionCartesian3坐标
anchor[Number,Number][0,0]展示位置的横、纵偏移量
clickfunction绑定的单击事件回调
popuphtml绑定框架支持的popup鼠标单击信息提示
tooltiphtml绑定框架支持的tootip鼠标移入信息提示
distanceDisplayConditionDistanceDisplayCondition在指定的相机视距范围内显示
scaleByDistanceNearFarScalar按指定缩放规则进行缩放处理
heightReferenceHeightReference高度模式,主要用于无高度值时可以指定贴地
depthTestbooleantrue是否进行深度检测,false时地球遮挡等情况下一直可见

属性

属性名类型说明
domDOM对象(只读)

该html对应的DOM对象,可以进行其他自定义操作

visibleBoolean

设置点的显示或隐藏状态

htmlString绑定的html代码,一般为div
popuphtml绑定框架支持的popup鼠标单击信息提示
tooltiphtml绑定框架支持的tootip鼠标移入信息提示
depthTestboolean是否进行深度检测,false时地球遮挡等情况下一直可见

方法

包括模块释放时相关方法。
方法名返回值说明
showPopup()void

如有绑定popup时,将popup弹出显示

closePopup()void

如有绑定popup时,将popup关闭

destroy()void

释放销毁对象

动态河流

mars3d.DynamicRiver是实体类,提供动态河流效果的矢量对象展示。

使用示例

var river = new mars3d.DynamicRiver(viewer, {
    image: './img/textures/movingRiver.png',
    positions: pots,
    width: 200,
    height: 10,
    speed: 10, 
});

Options参数选项

Option参数参数类型默认值说明
positionCartesian3坐标
imageString材质图片url路径
flipYbooleanfalse是否Y方向,用于控制图片横纵方向
widthNumber10河宽度
heightNumber0高程高度值
alphaNumber0.5透明度
movebooleantrue是否流动
speedNumber1.0流动时的流速
moveDirbooleantrue控制流速的方向
moveVarCartesian3Cesium.Cartesian3(50, 1, 100)控制流速的水面动画

属性

属性名类型说明
flipYboolean是否Y方向,用于控制图片横纵方向
widthNumber河宽度
heightNumber高程高度值
alphaNumber透明度
moveboolean是否流动
speedNumber流动时的流速
moveDirboolean控制流速的方向
moveVarCartesian3控制流速的水面动画

方法

包括模块释放时相关方法。
方法名返回值说明
setPositions( Cartesian3 [] positions)void

初始化没传坐标时,可后续设置坐标

destroy()void

释放销毁对象

粒子效果扩展

mars3d.ParticleSystemEx是实体类,提供对Cesium原生的ParticleSystem进一步封装,达到简化使用的目的。

使用示例

var particleSystemEx = new mars3d.ParticleSystemEx(viewer, {
    //ParticleSystem原生属性
    image: './img/particle/smoke.png',
    startColor: Cesium.Color.LIGHTCYAN.withAlpha(0.3),    //粒子出生时的颜色
    endColor: Cesium.Color.WHITE.withAlpha(0.0),   //当粒子死亡时的颜色

    particleSize: 20,  //粒子图片的Size大小(单位:像素)
    startScale: 2.0, //粒子在出生时的比例(单位:相对于imageSize大小的倍数)
    endScale: 4.0,   //粒子在死亡时的比例(单位:相对于imageSize大小的倍数)

    minimumParticleLife: 1.0,//粒子可能存在的最短寿命时间,实际寿命将随机生成(单位:秒)
    maximumParticleLife: 3.0,//粒子可能存在的最长寿命时间,实际寿命将随机生成(单位:秒)

    emissionRate: 200, //粒子发射器的发射速率 (单位:次/秒)

    //mars扩展的属性
    position: Cesium.Cartesian3.fromDegrees(117.221844, 31.813857, 28.5), //位置
    gravity: -11,  //重力因子,会修改速度矢量以改变方向或速度(基于物理的效果)
    target: new Cesium.Cartesian3(-0.151, 0.294, 0.225), // 粒子的方向 
    maxHeight: 5000,  //超出该高度后不显示粒子效果 
})

Options参数选项

Option参数参数类型默认值说明
imageString粒子对象的图片url路径
particleSizeNumber25粒子对象的大小(像素值)
其他ParticleSystem原生属性Cesium.ParticleSystem原生所有属性均支持
positionCartesian3当粒子是固定位置时,传入的具体坐标
modelMatrixfunction当粒子是基于运动的对象时,可以传入modelMatrix来控制粒子的实时运动位置
modelMatrix(time) { 
    //entity是运动的小汽车对象
    return entity.computeModelMatrix(time, new Cesium.Matrix4());
}
gravityNumber0重力因子,会修改速度矢量以改变方向或速度(基于物理的效果)
targetCesium.Cartesian3Cesium.Cartesian3(0, 0, 0)粒子的运动方向
maxHeightNumber5000超出该高度后不显示粒子效果,因为超出一定高度后粒子都拥挤在一起,很不美观。
transXNumber0在粒子系统本地坐标系中转换粒子系统发射器时的x方向值
transYNumber0在粒子系统本地坐标系中转换粒子系统发射器时的y方向值
transZNumber0在粒子系统本地坐标系中转换粒子系统发射器时的z方向值
hasDefUpdatebooleantrue控制内部是否进行 updateCallback 回调处理

属性

属性名类型说明
particleSystemCesium.ParticleSystemCesium原生的粒子对象
showboolean粒子对象的显示隐藏状态
particleSizeNumber粒子对象的大小(像素值)
positionCartesian3当粒子是固定位置时,传入的具体坐标
modelMatrixfunction当粒子是基于运动的对象时,可以传入modelMatrix来控制粒子的实时运动位置
modelMatrix(time) { 
    //entity是运动的小汽车对象
    return entity.computeModelMatrix(time, new Cesium.Matrix4());
}
targetCesium.Cartesian3粒子的运动方向

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

释放销毁对象

水面对象

mars3d.water.createWaterPrimitive是一个创建动态水面primitive对象的方法

使用示例

//水效果
var polygon = new Cesium.PolygonGeometry({
    height: height,  //水面高
    perPositionHeight: true,
    extrudedHeight: height, //底部高
    polygonHierarchy: new Cesium.PolygonHierarchy(positions),
});
var primitive = mars3d.water.createWaterPrimitive(polygon, {
    normalMap: './img/textures/waterNormals.jpg', //水正常扰动的法线图 
    frequency: 9000.0,     //控制波数的数字。
    animationSpeed: 0.03,   //控制水的动画速度的数字。
    amplitude: 5.0,         //控制水波振幅的数字。
    specularIntensity: 0.2,  //控制镜面反射强度的数字。  
    baseWaterColor: "#123e59", //rgba颜色对象基础颜色的水。#00ffff,#00baff,#006ab4
    blendColor: "#123e59"     //从水中混合到非水域时使用的rgba颜色对象。
})
viewer.scene.primitives.add(primitive);

Options参数选项

Option参数参数类型默认值说明
normalMapString水正常扰动的法线图url路径
frequencyNumber8000控制波数的数字。
animationSpeedNumber0.03控制水的动画速度的数字。
amplitudeNumber5.0控制水波振幅的数字。
specularIntensityNumber0.8控制镜面反射强度的数字。
baseWaterColorString#123e59rgba颜色对象基础颜色的水。
blendColorString#123e59从水中混合到非水域时使用的rgba颜色对象。
clampToGroundbooleanfalse是否贴地

动画线材质

mars3d.LineFlowMaterial是实体类,提供动画线材质扩展,可以用于polyline、wall等Etnity的material绑定。

使用示例

//示例:箭头动态特效
viewer.entities.add({
    polyline: {
        positions: Cesium.Cartesian3.fromDegreesArrayHeights([
            117.150141, 31.833051, 33.9,
            117.166225, 31.819655, 44.6,
            117.195088, 31.807772, 42.3
        ]),
        width: 5,
        material: new mars3d.LineFlowMaterial({//动画线材质
            color: Cesium.Color.CHARTREUSE,
            duration: 1000, //时长,控制速度
            url: 'img/textures/ArrowOpacity.png'
        }),
    }
});

Options参数选项

Option参数参数类型默认值说明
colorColornew Cesium.Color(0, 0, 0, 0)颜色
durationNumber1000动画时长,单位:毫秒
urlString贴图url地址
repeatCesium.Cartesian2new Cesium.Cartesian2(1.0, 1.0)横纵方向的贴图,重复次数
axisYBooleanfalse是否为Y轴方向,用于指定横纵方向

动态波纹材质

mars3d.CircleFadeMaterial是实体类,提供动态波纹效果材质扩展,可以用于ellipse Etnity的material绑定,模拟动态点波纹。

使用示例

var center = Cesium.Cartesian3.fromDegrees(117.29, 32.0581, 1); 
viewer.entities.add({
    position: center,
    ellipse: {
        height: 0.0,
        semiMinorAxis: 80000.0,
        semiMajorAxis: 80000.0,
        material: new mars3d.CircleFadeMaterial({
            color: new Cesium.Color(77 / 255, 201 / 255, 255 / 255, 0.9)
        }),
    }
});

Options参数选项

Option参数参数类型默认值说明
colorColor颜色
durationNumber1000动画时长,单位:毫秒

多圈动态波纹材质

mars3d.CircleWaveMaterial是实体类,提供动态波纹效果材质扩展,可以用于ellipse Etnity的material绑定,模拟动态点波纹(多个圈)。

使用示例

var center = Cesium.Cartesian3.fromDegrees(117.29, 32.0581, 1); 
viewer.entities.add({
    position: center,
    ellipse: {
        height: 0.0,
        semiMinorAxis: 500.0,
        semiMajorAxis: 500.0,
        material: new mars3d.CircleWaveMaterial({
            duration:2000,//动画时长,单位:毫秒
            color: Cesium.Color.CHARTREUSE,
            gradient:0,
            count:3
        }),
    }
});

Options参数选项

Option参数参数类型默认值说明
colorColor颜色
durationNumber1000动画时长,单位:毫秒
countNumber2圆圈个数
gradientNumber0.1透明度的幂方(0-1),0表示无虚化效果,1表示虚化成均匀渐变

文字贴图材质

mars3d.TextMaterial是实体类,提供文字贴图材质扩展,可以用于面状Etnity的material绑定,模拟不同文字效果。

使用示例

  viewer.entities.add({
    name: '路面文字',
    rectangle: {
        coordinates: Cesium.Rectangle.fromDegrees(121.479989, 29.791162, 121.480114, 29.791201),
        classificationType: Cesium.ClassificationType.BOTH,
        material: new mars3d.TextMaterial({
            text: '火 星 路',
            textStyles: {
                font: '50px 楷体',
                fill: true,
                fillColor: Cesium.Color.DARKGREEN,
                stroke: true,
                strokeWidth: 3,
                strokeColor: Cesium.Color.WHITE,
                backgroundColor: new Cesium.Color(0.0, 0.0, 0.0, 0),
            },
        }),
        rotation: Cesium.Math.toRadians(163),
        stRotation: Cesium.Math.toRadians(163),
    }
});

Options参数选项

Option参数参数类型默认值说明
colorColor颜色
textString显示的文本
textStylesObject
{
    font: '50px 楷体',
    fill: true,
    fillColor: new Cesium.Color(1.0, 1.0, 0.0, 1.0),
    stroke: true,
    strokeWidth: 2,
    strokeColor: new Cesium.Color(1.0, 1.0, 1.0, 0.8),
    backgroundColor: new Cesium.Color(1.0, 1.0, 1.0, 0.1),
    textBaseline: 'top',
    padding: 40,
}
设置文本的相关配置及样式,具体参数参考 writeTextToCanvas

Measure量算类

mars3d.analysi.Measure是实体类,提供测量长度、面积、高度等处理类。

使用示例

this.measureSurface = new mars3d.analysi.Measure({
    viewer: viewer,
    terrain: false
}); 
measureSurface.measuerLength();//测量长度
measureSurface.measureArea();//测量面积                                 
measureSurface.measureHeight();//测量高度
measureSurface.clearMeasure();//清除

创建对象

创建示例说明
mars3d.analysi.Measure(<measure options> options)根据相关参数创建一个量算控制器

Options参数选项

Option参数参数类型默认值说明
viewerviewer必须传入当前的地球对象viewer
fontString'16px SimHei'显示测量结果文本的字体

测量方法中 Options参数选项

measureLength、measureHeight、measureArea方法参数值,可选Options参数选项
Option参数参数类型默认值说明
unitStringnull指定显示测试结果的的计量单位,未指定时内部会自动处理显示。
长度高度可选值有:km(公里)、mile(海里)、m(米)、zhang(丈)
面积可选值有: m(平方米)、km(平方公里)、mu(亩)、ha(公顷)
calbackfunctionnull返回测量结果的回调方法,用于在其他界面显示测量结果。
calback: function (text, value) {
   //text为带计量单位的结果,value为数值(米,平方米)
}
terrainBooleannull测量长度、面积时标识是否贴地模式
isSuperBooleannullmeasureHeight高度测量时标识不同模式

方法

方法名返回值说明
measuerLength(MeasureFun Options options)void

长度测量,terrain参数控制是否贴地测量

measureArea(MeasureFun Options options)void

面积测量,terrain参数控制是否贴地测量

measureHeight(MeasureFun Options options)void

高度测量,isSuper参数控制是否三角测量

measureAngle(MeasureFun Options options)void

角度测量

measureSection(MeasureFun Options options)void

剖面分析

measurePoint(MeasureFun Options options)void

坐标测量

updateUnit(String thisType,MeasureFun Options options)void

更新单位,thisType标识类型,如area、length、height

clearMeasure()void

清除所有测量结果

stopDraw()void

停止绘制,但不清除已有的绘制。

endDraw()void

外部控制,等价于双击完成绘制,比如手机端无法双击结束

formatArea(<Number> val,<String> unit?)String

进行单位换算,格式化显示面积

unit可选值有: m(平方米)、km(平方公里)、mu(亩)、ha(公顷)
formatLength(<Number> val,<String> unit?)String

进行单位换算,格式化显示长度

unit可选值有: km(公里)、mile(海里)、m(米)、zhang(丈)

方量分析

mars3d.analysi.MeasureVolume是实体类,提供基于方量分析测量填挖方体积的计算。

使用示例

var measureObj = new mars3d.analysi.MeasureVolume(viewer,{
    callBack:function(){
        
    }
}); 

start方法Options参数选项

Option参数参数类型默认值说明
heightLabelbooleantrue是否显示各坐标的海拔高度值
offsetLabelbooleanfalse是否显示各坐标的离地高度值
onStartfunction分析前回调方法
onStopfunction分析完成后回调

属性

属性名类型说明
heightNumber基准面高度,默认为最低点的高度值
maxheightNumber最大高度,主要用于显示墙高度
heightLabelboolean是否显示各坐标的海拔高度值
offsetLabelboolean是否显示各坐标的离地高度值

方法

包括模块释放时相关方法。
方法名返回值说明
startDraw()void

激活绘制面,进行分析绘制区域结果的体积

selecteHeight()void

激活图上绘制,点选基准面

start( Cartesian3 [] positions)void

通过传入坐标进行分析

clear()void

清除分析

destroy()void

销毁释放对象

坡度坡向分析

mars3d.analysi.Slope是实体类,提供基于计算绘制的范围内的插值点的坡度坡向值。

使用示例

var slope = new mars3d.analysi.Slope({
    viewer: viewer,
    point: {
        show: true,
        pixelSize: 9,
        color: Cesium.Color.RED.withAlpha(0.5),
        disableDepthTestDistance: Number.POSITIVE_INFINITY,
    },
    arrow: {
        show: true,
        scale: 0.3, //箭头长度的比例(范围0.1-0.9)
        width: 15,  //箭头宽度
        color: Cesium.Color.YELLOW
    },
    tooltip: function (entity) {//自定义tooltip显示内容
        var attr = entity.properties;
        return `坡度: ${attr.slopeStr1}  (${attr.slopeStr2}) 坡向: ${attr.direction}°`
    }, 
}) 

Options参数选项

Option参数参数类型默认值说明
viewerViewer地球对象
arrowObject{show:true, scale:0.3, width:1.5, color:Cesium.Color.YELLOW}箭头的显示对象相关属性
pointObject{show:true, pixelSize:9, width:1.5, color:Cesium.Color.RED.withAlpha(0.5)}坡度点的显示对象相关属性
tooltipString/function绑定的tooltip显示对象,格式参考tooltip示例规范
positionsCartesian3 [] positions)null需要分析的面的边界点
calbakfunction分析完成的回调方法,传回分析结果的所有点
 calbak: function (arr) {
    // 数组内返回值说明: {
    //     position:position,  //坐标位置
    //     slope: slopeValDou, //度数法值,α(坡度)=arc tan (高程差/水平距离)
    //     slopeStr1: text1,   //度数法值字符串
    //     slopeStr2: text2,   //百分比法值字符串,坡度 = (高程差/水平距离)x100% 
    //     direction: slopeAngle //坡向值(0-360度)
    // }
    console.log(arr);
} 

方法

包括模块释放时相关方法。
方法名返回值说明
add( Cartesian3 [] positions, Object options)void

通过传入坐标进行分析

options支出下面参数:
slope.add(positions, {
    splitNum: splitNum,  //splitNum插值分割的个数
    radius: 1, //缓冲半径(影响精度)
    count: 4   //缓冲的数量,会求周边(count*4)个点(影响精度)
});
clear()void

清除分析

destroy()void

销毁释放对象

地下模式

mars3d.analysi.Underground是实体类,提供开启地下模式浏览方式。

使用示例

var underObj = new mars3d.analysi.Underground(viewer, {
    alpha: 0.5,
    enable: true,
}); 

start方法Options参数选项

Option参数参数类型默认值说明
alphaNumber0.5地表透明度 0-1
enablebooleanfalse是否开启地表透明

属性

属性名类型说明
depthNumber允许相机地下深度(相对于地表海拔)
alphaNumber地表透明度 0-1
enableboolean是否开启地表透明

淹没分析(Entity)

mars3d.analysi.FloodByEntity是实体类,提供polygon Entity模拟的平面 淹没分析效果。

使用示例

var floodControl = new mars3d.analysi.FloodByEntity(viewer);
//开始分析
floodControl.start(drawEntity, {
    height: minValue,
    maxHeight: maxValue,
    speed: speed,
    onChange: function (height) {
        $("#msg").html('当前高度:' + height.toFixed(1));
    },
    onStop: function () {
        $("#msg").html('已完成分析');
    }
});  

start方法Options参数选项

Option参数参数类型默认值说明
heightNumber当前海拔高度,一般为分析的最低点高程
maxHeightNumber分析的最高点高程
speedNumber淹没速度 ,单位 :米/秒
onChangefunction高程变化回调
onStopfunction分析完成,到达最高海拔后回调

属性

属性名类型说明
heightNumber

当前淹没到的海拔高度

方法

包括模块释放时相关方法。
方法名返回值说明
start(Entity entity, Object options)void

开始分析

clear()void

停止并清除分析结果

淹没分析(Terrain)

mars3d.analysi.FloodByTerrain是实体类,提供基于Globel材质处理的淹没分析效果。

使用示例

var floodObj = new mars3d.analysi.FloodByTerrain(viewer, {
    positions: positions,
    minHeight: minValue,
    maxHeight: maxValue,
    speed: speed,
    visibleOutArea: visibleOutArea
});;  

start方法Options参数选项

Option参数参数类型默认值说明
heightNumber当前海拔高度,一般为分析的最低点高程
minHeightNumber分析的最低点高程
maxHeightNumber分析的最高点高程
speedNumber淹没速度 ,单位 :米/秒
visibleOutAreaboolean非淹没区域显示
onStopfunction分析完成,到达最高海拔后回调

属性

属性名类型说明
showboolean显示隐藏
speedNumber淹没速度 ,单位 :米/秒
visibleOutAreaboolean非淹没区域显示

方法

包括模块释放时相关方法。
方法名返回值说明
setPositions( Cartesian3 [] positions)void

初始化没传区域坐标时,可后续设置区域坐标

cancelFloodSpeed()void

暂停淹没动画

reFlood()void

重新淹没

destroy()void

销毁释放对象

地形开挖(平面)

mars3d.analysi.TerrainClipPlan是实体类,提供基于ClippingPlane裁剪地形的开挖分析效果。

使用示例

var terrainClip = new mars3d.analysi.TerrainClipPlan(viewer, {
    positions: positions,
    height: height, //高度
    splitNum: 50, //wall边界插值数
    wallImg: './img/textures/excavate_side_min.jpg', //边界墙材质
    bottomImg: './img/textures/excavate_bottom_min.jpg'//底部区域材质
});  

Options参数选项

Option参数参数类型默认值说明
heightNumber当前海拔高度,一般为分析的最低点高程
positionsCartesian3 []挖地区域边界坐标数组
splitNumNumber边界墙 插值个数
wallImgString边界墙材质 图片url
bottomImgString底部区域材质 图片url

属性

属性名类型说明
showBoolean

显示隐藏开挖区域

heightNumber

当前淹没到的海拔高度

方法

包括模块释放时相关方法。
方法名返回值说明
updateData( Cartesian3 [] positions)void

更新开挖区域

clear()void

清除开挖区域结果

地形开挖(材质)

mars3d.analysi.TerrainClip是实体类,提供基于Globe材质的裁剪地形的开挖分析效果。

使用示例

  var terrainExcavate = new mars3d.analysi.TerrainClip(viewer, {
    positions: positions,
    height: height, 
    splitNum: 50, //wall边界插值数
    wallImg: './img/textures/excavate_side_min.jpg',
    bottomImg: './img/textures/excavate_bottom_min.jpg'
}); 

Options参数选项

Option参数参数类型默认值说明
heightNumber当前海拔高度,一般为分析的最低点高程
positionsCartesian3 []挖地区域边界坐标数组
splitNumNumber边界墙 插值个数
wallImgString边界墙材质 图片url
bottomImgString底部区域材质 图片url

属性

属性名类型说明
showBoolean

显示隐藏开挖区域

showSelfOnlyBoolean

仅显示自己

heightNumber

当前淹没到的海拔高度

boundingSwellNumber

点集合的包围盒膨胀数值

方法

包括模块释放时相关方法。
方法名返回值说明
setPositions( Cartesian3 [] positions)void

初始化没传区域坐标时,可后续设置区域坐标

destroy()void

释放清除开挖区域结果

等高线

mars3d.analysi.HeightCounterByTerrain是实体类,提供基于Globe材质的等高线限定范围分析效果。

使用示例

  var heightCounterByTerrain =  new mars3d.analysi.HeightCounterByTerrain(viewer, {
    positions: positions
});

Options参数选项

Option参数参数类型默认值说明
positionsCartesian3 []等高线区域边界坐标数组

属性

属性名类型说明
showBoolean

显示隐藏等高线区域

方法

包括模块释放时相关方法。
方法名返回值说明
setPositions( Cartesian3 [] positions)void

初始化没传区域坐标时,可后续设置区域坐标

destroy()void

释放清除结果

模型剖切

mars3d.tiles.TilesClipPlan是实体类,提供基于ClippingPlane裁剪模型的剖切分析效果。

使用示例

 var clipTileset = new mars3d.tiles.TilesClipPlan(tileset,{
    type:mars3d.tiles.TilesClipPlan.Type.Z,//切顶部
    distance:10//裁剪距离
});  

Options参数选项

Option参数参数类型默认值说明
typemars3d.tiles.TilesClipPlan.Type剖切方向
distanceNumber剖切距离 ,离模型中心原点的距离,单位:米

属性

属性名类型说明
typemars3d.tiles.TilesClipPlan.Type

剖切方向

distanceNumber

剖切距离 ,离模型中心原点的距离,单位:米

方法

包括模块释放时相关方法。
方法名返回值说明
clear()void

清除剖切结果

建筑物混合遮挡

mars3d.tiles.MixedOcclusion是实体类,提供建筑物混合遮挡效果。 1.楼块不能遮挡道路、水系、绿地和标注等地图元素; 2.楼快之间,需要实现不透明的实际遮挡效果。

使用示例

 var fuseTileAndBG = new mars3d.tiles.MixedOcclusion(viewer, {
    alpha: 0.5
}); 

Options参数选项

Option参数参数类型默认值说明
enabledBooleantrue是否启用
alphaNumber0.5透明度

属性

属性名类型说明
enabledBoolean是否启用
alphaNumber透明度

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

清除销毁对象

模型裁剪

mars3d.tiles.TilesClip是实体类,提供倾斜摄影模型的模型裁剪功能。该功能对3dtiles数据有要求,仅适用于无自带着色器的模型。

使用示例

 var  tilesetClip = new mars3d.tiles.TilesClip({
    viewer: viewer,
    tileset: tileset,
    positions: positions,
    clipOutSide: false
}); 

Options参数选项

Option参数参数类型默认值说明
viewerViewer地球对象
tilesetCesium3DTileset3dtiles模型对象
positionsCartesian3 []裁剪模型的区域边界坐标
clipOutSidebooleanfalsetrue裁剪区域外部部分,false裁剪区域内部部分

属性

属性名类型说明
tilesetCesium3DTileset3dtiles模型对象
clipOutSidebooleantrue裁剪区域外部部分,false裁剪区域内部部分

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

清除销毁对象

模型压平

mars3d.tiles.TilesFlat是实体类,提供倾斜摄影模型的模型压平功能。该功能对3dtiles数据有要求,仅适用于无自带着色器的模型。

使用示例

 var  tilesetClip = new mars3d.tiles.TilesFlat({
    viewer: viewer,
    tileset: tileset,
    positions: positions,
    flatHeight: 0
}); 

Options参数选项

Option参数参数类型默认值说明
viewerViewer地球对象
tilesetCesium3DTileset3dtiles模型对象
positionsCartesian3 []压平模型的区域边界坐标
flatHeightNumber0压平区高度

属性

属性名类型说明
tilesetCesium3DTileset3dtiles模型对象
flatHeightNumber压平区高度

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

清除销毁对象

模型淹没

mars3d.tiles.TilesFlood是实体类,提供倾斜摄影模型的模型模型淹没功能。该功能对3dtiles数据有要求,仅适用于无自带着色器的模型。

使用示例

 var  tilesetClip = new mars3d.tiles.TilesFlood({
    viewer: viewer,
    tileset: tileset,
    positions: positions,
    floodAll: false
}); 

Options参数选项

Option参数参数类型默认值说明
viewerViewer地球对象
tilesetCesium3DTileset3dtiles模型对象
positionsCartesian3 []淹没分析的区域边界坐标
floodAllBooleanfalse是否模型全局淹没
floodSpeedNumber5.5淹没速度,米/秒(默认刷新频率为55Hz)
floodColorarray[0.15, 0.7, 0.95, 0.5]淹没颜色数组

属性

属性名类型说明
tilesetCesium3DTileset3dtiles模型对象
floodAllBoolean是否模型全局淹没

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

清除销毁对象

视频投射Video2D

mars3d.video.Video2D是实体类,提供html5 video视频源投射到三维场景中。

使用示例

var selectedView = new mars3d.video.Video2D(viewer, videoElement, {
    aspectRatio: viewer.scene.camera.frustum.aspectRatio,
    fov: viewer.scene.camera.frustum.fov,
    dis: 2000
}); 

Options参数选项

Option参数参数类型默认值说明
aspectRatioNumber宽高比
fovNumber相机水平张角
disNumber10视角距离
stRotationNumber0材质方向 0-360
frustumShowBooleantrue投射的视椎体是否显示
camera相机位置等参数

属性

属性名类型说明
playBoolean视频播放机暂停
aspectRatioNumber宽高比
fovNumber相机水平张角
disNumber视角距离
stRotationNumber材质方向 0-360
frustumShowBoolean投射的视椎体是否显示
paramsobject 只读所有相机的参数

方法

包括模块释放时相关方法。
方法名返回值说明
locate()void

切换相机到 呈现投影相机的第一视角

rotateCamera(String axis, Number deg)void

往axis方向旋转相机deg步长

destroy()void

释放销毁资源

视频投射Video3D

mars3d.video.Video3D是实体类,提供html5 video视频源投射到三维场景中,同时也支持投射图片或颜色对象。

使用示例

 var selectedView = new mars3d.video.Video3D(viewer, {
    type: mars3d.video.Video3D.Type.Video,
    url: "http://data.marsgis.cn/video/lukou.mp4",
    cameraPosition: cameraPosition,
    position: position,
    alpha: alpha, 
});  

Options参数选项

Option参数参数类型默认值说明
typemars3d.video.Video3D.Type*.Type.Video类型,视频、图片、颜色
cameraPositionCartesian3相机位置
positionCartesian3目标视点位置
alphaNumber1.0透明度 0 - 1
urlString视频或图片的url地址
colorColor颜色投放时的,颜色值
debugFrustumBooleantrue投射的视椎体是否显示
aspectRatioNumber宽高比
fovNumber相机水平张角

属性

属性名类型说明
cameraPositionCartesian3相机位置
positionCartesian3目标视点位置
alphaNumber透明度 0 - 1
debugFrustumBoolean投射的视椎体是否显示
aspectRatioNumber宽高比
fovNumber相机水平张角
showBoolean显示和隐藏
videoPlayBoolean切换视频 播放/暂停

方法

包括模块释放时相关方法。
方法名返回值说明
locate()void

切换相机到 呈现投影相机的第一视角

destroy()void

释放销毁资源

通视分析

mars3d.analysi.Sightline是实体类,提供通视分析功能。

使用示例

var sightline = new mars3d.analysi.Sightline(viewer);
sightline.add(positions1, positions2);//添加需要分析的起止点 

Options参数选项

Option参数参数类型默认值说明
originPointCartesian3通视分析 起始点位置
targetPointCartesian3通视分析 目标点位置
visibleAreaColorColor可视区域颜色
hiddenAreaColorColor不可视区域颜色

属性

属性名类型说明
visibleAreaColorColor可视区域颜色
hiddenAreaColorColor不可视区域颜色

方法

包括模块释放时相关方法。
方法名返回值说明
add( Cartesian3 origin, Cartesian3 target)void

添加分析

clear()void

清除所有分析结果

destroy()void

释放销毁资源

可视域分析

mars3d.analysi.ViewShed3D是实体类,提供可视域分析功能。

使用示例

 var selectedView = new mars3d.analysi.ViewShed3D(viewer, {
        horizontalAngle: horizontalAngle,
        verticalAngle: verticalAngle,
        distance: distance, 
    })  

Options参数选项

Option参数参数类型默认值说明
cameraPositionCartesian3相机位置 ,无值时通过鼠标绘制获取
viewPositionCartesian3目标视点位置,无值时通过鼠标绘制获取
calbackfunction未传入相机位置和视点位置时,手动图上绘制结束后的回调方法
alphaNumber0.5透明度 0 - 1
horizontalAngleNumber水平张角
verticalAngleNumber垂直张角
frustumBooleantrue投射的视椎体是否显示
distanceNumber可视距离 , 已传viewPosition值时,该参数无效
visibleAreaColorColornew Cesium.Color(0, 1, 0)可视区域颜色
hiddenAreaColorColornew Cesium.Color(1, 0, 0)不可视区域颜色

属性

属性名类型说明
cameraPositionCartesian3相机位置 ,无值时通过鼠标绘制获取
viewPositionCartesian3目标视点位置,无值时通过鼠标绘制获取
alphaNumber透明度 0 - 1
horizontalAngleNumber水平张角
verticalAngleNumber垂直张角
frustumBoolean投射的视椎体是否显示
distanceNumber可视距离
visibleAreaColorColor可视区域颜色
hiddenAreaColorColor不可视区域颜色
showBoolean显示和隐藏

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

释放销毁资源

飞行漫游路线

mars3d.FlyLine是实体类,提供飞行漫游路线控制。参数建议从“基础项目” 的“飞行漫游”功能界面操作后保存JSON后拷贝传入。

使用示例

//flydata数据值可以从“基础项目” 的“飞行漫游”功能界面操作后保存JSON
var flydata = {
    "id": "1",
    "name": "城市飞行",
    "points": [
        [117.245989, 31.852285, 100],
        [117.246347, 31.834418, 300],
        [117.246703, 31.816635, 500]
    ],
    "speed": 100,
    "camera": { "type": "gs", "followedX": 50, "followedZ": 10 },
    "model": {
        "show": true,
        "uri": "http://data.marsgis.cn/gltf/mars/zhanji.glb",
        "scale": 0.01,
        "minimumPixelSize": 100
    },
    "path": { "show": true, "color": "#ffff00", "opacity": 0.5, "width": 1,"isAll":false },
    "interpolation": false,  //setInterpolationOptions插值 
    "shadow": [{ "show": true, "type": "wall" }]
};
flyLine = new mars3d.FlyLine(viewer, flydata);
flyLine.start();

Options参数选项

Option参数参数类型默认值说明
idString0标识路线唯一值,无特殊意义
nameString路线名称,无特殊意义
points[[x, y, z],[x, y, z]…]路线坐标数组,按坐标路线进行漫游
speedNumber/Array飞行速度 ,km/h
cameraObject{ "type": "gs", "followedX": 50, "followedZ": 10 }对漫游时空中飞行时的相机视角进行设置,可以设置跟随视角、锁定第一视角等效果
shadow[Object]对一些辅助的漫游效果的额外entity对象的控制配置,如空中飞行时的对地投影显示效果进行配置,支持墙和圆锥
interpolationbooleanfalse是否对路线进行setInterpolationOptions插值
interpolationDegreeNumber2对路线进行插值时的interpolationDegree参数设置
clockRangeCesium.ClockRangeCesium.ClockRange.UNBOUNDED赋值给viewer.clock.clockRange ,控制播放结束后的行为。如:
Cesium.ClockRange.CLAMPED, // 到达终点后停止
Cesium.ClockRange.LOOP_STOP, //到达终止时间后 循环从头播放  
clockLoopbooleanfalse是否结束后继续循环漫游路线,等价于clockRange:Cesium.ClockRange.LOOP_STOP
autoStopbooleanfalse到达结束时间后,是否自动stop ,仅限在clockRange:Cesium.ClockRange.UNBOUNDED
showGroundHeightbooleanfalse是否在label中显示离地高度
modelObject{ "show": false, "scale": 1, "minimumPixelSize": 50 }对漫游时显示的gltf模型进行配置,支持Draw中的所有可配置属性
labelObject{ "show": false, "color": "#ffffff", "font_family": "楷体", "font_size": 20 }对漫游时显示的文字注记进行配置,支持Draw中的所有可配置属性
pathObject{ "show": false, "lineType": "solid", "color": "#3388ff", "opacity": 0.5, "width": 1 }对漫游时显示的轨迹路线进行配置,支持Draw中的所有可配置属性
pauseTimeNumber/function在漫游到各点时暂停的时间(单位:秒)
onStepfunction播放到每一个坐标时的回调方法
"onStep": function (currIndex, allCount) {
    console.log('已漫游过点:' + currIndex);
}

属性

属性名类型说明
popup设置或获取漫游的模型关联的popup弹窗配置
infoobjcet 只读获取实时的漫游点信息,包含:已飞行时间time,已飞行距离len,所在坐标x、y、z
positionCartesian3 只读当前实时坐标位置
hdrHeadingPitchRoll获取当前实时hdr方向信息
orientationQuaternion获取当前实时orientation方向信息
matrixMatrix4获取当前实时矩阵信息

方法

包括模块释放时相关方法。
方法名返回值说明
start(function onEnd )void

开始漫游

pause()void

暂停漫游

proceed()void

继续漫游

stop()void

停止漫游

centerAt(Object opts?)void

相机视角定位至 路线全视角的 矩形范围内

flyTo(Object opts?)void

相机视角定位至移动的目标点当前位置

clampToGround(function onEnd,Object opts? )void

贴地漫游时,计算并生成贴地路线

opts控制参数:has3dtiles是否贴模型,splitNum插值次数

//贴地时,异步计算完成后开始
flyLine.clampToGround(function () {//异步计算完成贴地后再启动
    flyLine.start();

}, { has3dtiles: true }); //has3dtiles为true时贴模型表面
updateStyle(FlyLine Options params)void

更新参数,支持Options所有值

updateAngle( boolean isAuto, object opts)void

更新角度(opts支持heading, pitch, roll),isAuto时基于移动位置自动计算方位

toGeoJSON()Object

生成json格式规范的路线数据,与传入Flyline时的options是一致的。

toCZML()Object

生成CZML格式规范的路线数据。

destroy()void

释放所有资源

场景雾效果

mars3d.scene.FogEffect是实体类,提供场景雾效果。

使用示例

var fogEffect = new mars3d.scene.FogEffect(viewer, {
    color: new Cesium.Color(0.8, 0.8, 0.8, 0.5)
});

Options参数选项

Option参数参数类型默认值说明
showbooleantrue是否开启效果
fogByDistanceCesium.Cartesian4new Cesium.Cartesian4(10, 0.0, 1000, 0.9)雾强度
colorColornew Cesium.Color(0.8,0.8,0.8,0.5)颜色
maxHeightNumber9000大于此高度时不显示效果

属性

属性名类型说明
showboolean是否开启效果
fogByDistanceCesium.Cartesian4雾强度
colorColor颜色

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

释放销毁对象

倒影效果

mars3d.scene.InvertedScene是实体类,提供倒影效果。

使用示例

var inverted = new mars3d.scene.InvertedScene(viewer);

Options参数选项

Option参数参数类型默认值说明
showbooleantrue是否开启效果

属性

属性名类型说明
showboolean是否开启效果

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

释放销毁对象

雪覆盖效果

mars3d.scene.SnowCover是实体类,提供雪覆盖效果。

使用示例

 var snowCover = new mars3d.scene.SnowCover(viewer,{
    alpha:0.5
});

Options参数选项

Option参数参数类型默认值说明
showbooleantrue是否开启效果
alphaNumber1.0雪覆盖强度

属性

属性名类型说明
showboolean是否开启效果
alphaNumber雪覆盖强度

方法

包括模块释放时相关方法。
方法名返回值说明
destroy()void

释放销毁对象

地图放大缩小控制

mars3d.ZoomNavigation是实体类,提供地图放大或缩小的控制。

使用示例

//放大
var zoomIn = new mars3d.ZoomNavigation(viewer, true);
$("#btn-zommIn").click(function () {
    zoomIn.activate();
});

//缩小
var zoomOut = new mars3d.ZoomNavigation(viewer, false);
$("#btn-ZoomOut").click(function () {
    zoomOut.activate();
}); 

方法

包括模块释放时相关方法。
方法名返回值说明
activate()void

放大或缩小地图

point坐标处理类

mars3d.point 该类是静态类。坐标转换处理类。

方法

方法名返回值说明
formatNum( Number num,Int digits)Number

格式化数字,返回指定digits长度的小数位数,比如经纬度通常6位小数

formatPositon( Cartesian3 position)Object

格式化坐标点为可显示的可理解格式,返回值示例:{ "x": 117.222228,"y": 31.787488, "z": 224 }。

getPositionValue( Cartesian3 position)Cartesian3

获取position的最终value值,因为cesium经常属性或绑定一层,通过该方法可以内部去判断是否有getValue或_value进行取最终value值。

formatRectangle( Rectangle position)Object

格式化Rectangle为可显示的可理解格式,返回值示例:{ "xmin": 115.123456,"xmax": 119.222228,"ymin": 30.123456,"ymax": 33.787488}。

getMaxHeight( Cartesian3 [] positions, Number defaultVal?)Number

获取坐标数组中最高高程值,defaultVal为默认高度值,没有传入时为0。

addPositionsHeight( Cartesian3 [] positions, Number addHeight)Cartesian3 []

在坐标基础海拔上增加指定的addHeight海拔高度值

setPositionsHeight( Cartesian3 [] positions, Number height)Cartesian3 []

设置坐标中海拔高度为指定的height高度值

getSurfaceHeight(Scene scene, Cartesian3 position, Object opts)Cartesian3

获取坐标的贴地(或贴模型)高度

opts支持: 是否在has3dtiles:true , 是否异步 asyn:true 异步回调方法calback

//点贴地或贴模型(异步)
var position = entity.position.getValue();
position = mars3d.point.getSurfaceHeight(viewer.scene, position, {
    asyn: true,     //是否异步求准确高度
    has3dtiles: true,   //是否先求贴模型上(无模型时改为false,提高效率)
    calback: function (newHeight, cartOld) { 
        console.log("原始高度为:" + cartOld.height.toFixed(2) + ",贴地高度:" + newHeight.toFixed(2)) 
        var positionNew = Cesium.Cartesian3.fromRadians(cartOld.longitude, cartOld.latitude, newHeight);
        entity.position.setValue(positionNew)
    }
}); 
getSurface3DTilesHeight(Scene scene, Cartesian3 position, Object opts)Cartesian3

获取坐标的贴地高度 ,与getSurfaceHeight的has3dtiles:true相同

opts支持: 是否异步 asyn:true 异步回调方法calback

getSurfaceTerrainHeight(Scene scene, Cartesian3 position, Object opts)Cartesian3

获取坐标的贴模型高度 ,与getSurfaceHeight的has3dtiles:true相同

opts支持: 是否异步 asyn:true 异步回调方法calback

//求地面海拔 (异步) 
mars3d.point.getSurfaceTerrainHeight(viewer.scene, position, {
    asyn: true,     //是否异步求准确高度 
    calback: function (newHeight, cartOld) {
        if (newHeight == null) return; 
        console.log("地面海拔:" + newHeight.toFixed(2)) 

    }
});
setPositionSurfaceHeight(Scene scene, Cartesian3 position, Object opts)Cartesian3

设置坐标中海拔高度为贴地或贴模型的高度,(同步时需要数据在视域内),内部逻辑是先getSurfaceHeight求高度后更新position的

opts支持: 是否异步 asyn:true 异步回调方法calback

getCurrentMousePosition(Scene scene, Cartesian2 position, Entity noPickEntity? )Cartesian3

获取鼠标当前位置,返回Cartesian3类型的笛卡尔坐标(可拾取模型,地形高度),常用于ScreenSpaceEventType事件处理中,noPickEntity为可选参数,表示不在noPickEntity表面拾取

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
handler.setInputAction(event => {
    var point = mars3d.point.getCurrentMousePosition(viewer.scene, event.position);
      
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
getCenter(Viewer viewer, Boolean isToWgs?)Object

提取屏幕中心点坐标,返回值示例:{ "y": 31.787488, "x": 117.222228, "z": 229 }。

当地球是高德等gcj坐标时,isToWgs设置是否转换为wgs84坐标

pickCenterPoint(Scene scene)Cartesian3

提取屏幕中心点坐标,返回Cartesian3值

getExtent(Viewer/Entity target , Object opts?)Object

获取当前地球或Entity的视域边界{xmin: 113.23422, xmax: 125.23452, ymin: 30.23436, ymax: 33.234252}。

支持opts:{scale:缩放比例}

getCameraView(Viewer viewer, Boolean isToWgs?)Object

获取当前相机视角范围参数坐标值,返回值示例:{ "y": 31.787488, "x": 117.222228, "z": 224, "heading": 56, "pitch": -29, "roll": 45 }。

当地球是高德等gcj坐标时,isToWgs设置是否转换为wgs84坐标

centerOfMass(Cartesian3[] positions, Number height)Cartesian3

求面的中心点,基于Turf

isInPoly(Cartesian3 position, Entity entity)boolean

点是否在Entity内(面、圆、矩形)

使用示例 getCurrentMousePosition

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function (movement) {
	//通过鼠标当前的二维屏幕坐标获取椭球笛卡尔坐标
    var cartesian = mars3d.point.getCurrentMousePosition(scene, movement.position);
    if (cartesian) {
    	//将笛卡尔坐标转为地理坐标
    	var cartographic = scene.globe.ellipsoid.cartesianToCartographic(cartesian);
    	var longitudeString = Cesium.Math.toDegrees(cartographic.longitude);
    	var latitudeString = Cesium.Math.toDegrees(cartographic.latitude);
    	var height = Math.ceil(cartographic.height);
    	//输出地理坐标值
    	console.log("经度:" + longitudeString + "纬度:" + latitudeString + "高度:" + height);
    }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

类名说明方法
windingPoint

绕点 环绕飞行

mars3d.point.windingPoint.start(viewer,point);//开始飞行
mars3d.point.windingPoint.stop();//停止飞行
aroundPoint

固定点 向四周旋转

mars3d.point.aroundPoint.start(viewer,point?);//开始飞行 ,point未传入时默认当前点
mars3d.point.aroundPoint.stop();//停止飞行

polyline线相关处理类

mars3d.polyline该类是静态类。线相关的处理类。

方法

方法名返回值说明
interPolyline(Object params)Cartesian3[]

对线进行插值

var arrLine = mars3d.polyline.interPolyline({
    scene: viewer.scene,
    positions: positions,//原始路线坐标
    splitNum: 100, // 插值分割的个数
}); 
computeSurfaceLine(Object params)Cartesian3[]

计算贴地路线

mars3d.polyline.computeSurfaceLine({
    viewer: viewer,
    positions: positions,//需要计算的源路线坐标数组
    splitNum: 100, // 插值分割的个数
    calback: function (raisedPositions, noHeight) {
        //raisedPositions为含高程信息的新坐标数组,noHeight为标识是否存在无地形数据。
                      
    }
});
computeSurfacePoints(Object params)Cartesian3[]

求多个点的的贴地新坐标(不插值)

mars3d.polyline.computeSurfacePoints({
    viewer: viewer,
    positions: positions,//需要计算的源路线坐标数组
    calback: function (raisedPositions, noHeight) {
        //raisedPositions为含高程信息的新坐标数组,noHeight为标识是否存在无地形数据。
                      
    }
});
computeStepSurfaceLine(Object params)void

按2个坐标点分段计算 求路线的贴地线

mars3d.polyline.computeStepSurfaceLine({
    viewer: viewer,
    positions: positions,
    has3dtiles: false, //是否只在3dtiles模型上计算
    splitNum: 10,  //插值次数
    //计算每个分段后的回调方法
    calbakStep: function (raisedPositions, noHeight, index) {

    },
    //计算全部完成的回调方法
    calbakEnd: function () {
    
    }
});
getLinkedPointList( Cartesian3 startPoint, Cartesian3 endPoint,Number angularityFactor,Number numOfSingleLine)void

计算曲线链路的点集(a点到b点的,空中曲线)

startPoint 开始节点,endPoint 结束节点, angularityFactor 曲率,numOfSingleLine 点集数量

var startPoint = Cesium.Cartesian3.fromDegrees(117.169804, 31.842798, 211.9);
    var endPoint = Cesium.Cartesian3.fromDegrees(117.327325, 31.869438, 31.8);
    var positions = mars3d.polyline.getLinkedPointList(startPoint, endPoint, 20000, 50);//计算曲线点

polygon面相关处理类

mars3d.polygon该类是静态类。面相关的处理类。

方法

方法名返回值说明
interPolygon(Object params)Object

面内进行贴地(或贴模型)插值, 返回三角网等计算结果

var resultInter = mars3d.polygon.interPolygon({
    scene: viewer.scene,
    positions: positions, //原始面边界坐标
    splitNum: 9, //splitNum 插值分割的格数
}); 
getHeightRange( Cartesian3[] positions, Scene scene)Object

计算面内最大、最小高度值。

computeVolume(Object params)Object

计算 体积(挖方方量) ,返回单位是立方米

var resultInter = mars3d.polygon.computeVolume({
    scene: viewer.scene,
    positions: positions, //原始面边界坐标
    splitNum: 9, //splitNum 插值分割的格数
}); 
var volume = resultInter.totalVolume //总体积 
updateVolumeByMinHeight(Object resultInter)Object

根据minHeight最低底面高度, 重新计算填挖方体积

resultInter为computeVolume初始计算完成的结果对象

updateVolume(Object resultInter,Number cutHeight)Object

根据cutHeight基准面高度, 重新计算填挖方体积

resultInter为computeVolume初始计算完成的结果对象

getEllipseOuterPositions(Object opts)[position]

获取圆(或椭圆)边线上的坐标点数组

var outerPositions = mars3d.polygon.getEllipseOuterPositions({
    position: position, //圆中心点
    semiMajorAxis: semiMajorAxis, //长半轴
    semiMinorAxis: semiMajorAxis, //短半轴
    rotation:0, //旋转的方向
    count: 90    //共返回360(count*4)个点
});  

pointconvert 坐标转换

mars3d.pointconvert 该类是静态类,提供Cesium内部不同坐标系之间的坐标转换算法。
也提供百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、WGS84坐标系、Web墨卡托 等坐标之间的转换算法,所有方法的“传入参数”和“返回结果”均是数组:[经度,纬度]

方法

方法名返回值说明
cartesian2lonlat(<Cartesian3> position)Array

将 笛卡尔空间坐标 转换为 经纬度值,主要用于转geojson(返回数组:[longitude,latitude,height])

cartesians2lonlats([<Cartesian3> positions])Array Array

【数组】将 笛卡尔空间坐标数组 转换为 经纬度值数组,主要用于转geojson(返回数组:[[longitude,latitude,height],...,[longitude,latitude,height]])

cartesian2mercator(<Cartesian3> position)Array

cesium笛卡尔空间坐标 转 web mercator投影坐标(返回数组:[x,y,z])

cartesians2mercators([<Cartesian3> positions])Array Array

【数组】cesium笛卡尔空间坐标 转 web mercator投影坐标(返回数组:[[x,y,z],...,[x,y,z]])

lonlat2cartesian(Array [longitude,latitude,height])Cartesian3

将 GeoJSON中的geometry格式的坐标 转换为 笛卡尔空间坐标

lonlats2cartesians(Array Array coordinates)[Cartesian3]

【数组】将 GeoJSON中的geometry格式的坐标数组 转换为 笛卡尔空间坐标数组

lonlat2mercator(Array [longitude,latitude,height])Array

地理坐标 转 投影坐标

lonlats2mercators(Array Array coordinates)Array Array

【数组】地理坐标 转 投影坐标数组

mercator2cartesian(Array [longitude,latitude,height])Cartesian3

将 投影坐标 转 cesium笛卡尔空间坐标

mercators2cartesians(Array Array coordinates)[Cartesian3]

【数组】将 投影坐标数组 转 cesium笛卡尔空间坐标数组

mercator2lonlat(Array [x,y,z])Array

投影坐标 转 地理坐标

mercators2lonlats(Array Array coordinates)Array Array

【数组】投影坐标数组 转 地理坐标数组

wgs2gcj([Number longitude,Number latitude])[longitude,latitude]

加偏:标准WGS84坐标 转 国测局偏移坐标

gcj2wgs([Number longitude,Number latitude])[longitude,latitude]

纠偏:国测局偏移坐标 转 标准WGS84坐标

gcj2bd([Number longitude,Number latitude])[longitude,latitude]

国测局偏移坐标 转 百度经纬度坐标

bd2gcj([Number longitude,Number latitude])[longitude,latitude]

百度经纬度坐标 转 国测局偏移坐标

wgs2bd([Number longitude,Number latitude])[longitude,latitude]

标准WGS84坐标 转 百度经纬度坐标

bd2wgs([Number longitude,Number latitude])[longitude,latitude]

百度经纬度坐标 转 标准WGS84坐标

jwd2mct([Number longitude,Number latitude])[longitude,latitude]

经纬度坐标 转为 Web墨卡托坐标

mct2jwd([Number longitude,Number latitude])[longitude,latitude]

Web墨卡托坐标 转为 经纬度坐标

matrix矩阵计算类

mars3d.matrix 该类是静态类。矩阵换算转换处理类。

方法

方法名返回值说明
getHeadingPitchRollByOrientation( Cartesian3 position, VelocityOrientationProperty orientation, Ellipsoid ellipsoid?, Transforms function fixedFrameTransform?)HeadingPitchRoll

根据位置和当前Orientation求HeadingPitchRoll方向,用于模型反求其方向值

getHeadingPitchRollByMatrix( Matrix4 matrix, Ellipsoid ellipsoid?, Transforms function fixedFrameTransform?, HeadingPitchRoll result?)HeadingPitchRoll

根据位置和矩阵求HeadingPitchRoll方向

getHeadingPitchRollForLine( Cartesian3 localStart, Cartesian3 localEnd, Ellipsoid ellipsoid?, Transforms function fixedFrameTransform?)HeadingPitchRoll

求localStart点到localEnd点的方向

getRotateCenterPoint( Cartesian3 center, Cartesian3 point, Number angle)Cartesian3

获取点point绕点center的地面法向量旋转顺时针angle角度后新坐标

getOnLinePointByLen( Cartesian3 p1, Cartesian3 p2, Number len, addBS,boolean addBS?)Cartesian3

求p1指向p2方向线上,距离p1指定len长度的新的点 ,addBS:true时为距离p2

getPositionTranslation( Cartesian3 position, Object offest, Number degree?, String type?, Transforms function fixedFrameTransform?)Cartesian3

获取点的offest平移矩阵后点

var position = Cesium.Cartesian3.fromDegrees(113.158,31.15,100);
var newPoint = mars3d.matrix.getPositionTranslation(position, { x: 100, y: 10, z: 0 }, 0, "z");
getOffsetLine( Cartesian3[] positions, Number offest)Cartesian3 []

计算平行线,offset正负决定方向(单位米)

gltf小模型相关

mars3d.model 该类是静态类。Gltf小模型相关处理类。

方法

方法名返回值说明
move( Entity entity, Object optionsCartesian3

移动模型

    mars3d.model.move(entity, {
    viewer:viewer,
    position: new Cesium.Cartesian3.fromDegrees(125.134654, 43.826725, 0.26),
    time: 3,
    onEnd: function () {
     
    }
});

类名说明方法
rotate

自旋转效果

mars3d.model.rotate.start(entity, { viewer: viewer });//开始
mars3d.model.rotate.stop();//停止

3dtiles模型相关

mars3d.tileset 该类是静态类。3dtiles模型相关处理类。

方法

方法名返回值说明
getCenter(Cesium3DTileset tileset,Booean transform)Model Entity

获取模型的(0,0,0)原点坐标位置

updateMatrix( Cesium3DTileset tileset, Object optionsCartesian3

修改模型位置

var originalCenter = mars3d.tileset.getCenter(tileset);

originalCenter.z = -originalCenter.z + 10; 
mars3d.tileset.updateMatrix(tileset, originalCenter);
pick3DTileset( Scene scene, Cartesian3[] positionsCesium3DTileset

拾取positions坐标点处的3dtiles对象,一般用于判断该坐标是否有模型,因为和当前视角有关系,判断不一定精确

measure类

mars3d.measure 该类是一些测量量算相关的常用通用静态方法

方法

方法名返回值说明
getLength( Cartesian3 [] positions)Number

计算长度,单位:米

getArea( Cartesian3 [] positions)Number

计算地表投影平面面积,单位:平方米

getClampArea( Cartesian3 [] positions, Object options)Number

计算贴地面积,单位:平方米

mars3d.measure.getClampArea(positions, {
    scene: viewer.scene,
    splitNum: 10, //插值次数,
    asyn: true,   //求准确的高度(异步)
    calback: function (area) {
        //回调方法,返回面积值
    }
});
getAreaOfTriangle( Cartesian3 position1, Cartesian3 position2, Cartesian3 position3)Number

计算三角形空间面积

getAngle( Cartesian3 firstPoint, Cartesian3 endPoints)Number

求地表方位角,返回:0-360度

getSlope( Object options)Number

求地面点的坡度坡向值,是对Slope类的简化调用

mars3d.measure.getSlope({
    positions:positions, //需要分析的点位数组
    viewer: viewer,
    calbak: function (arr) {//返回的计算值,按传入的数组顺序

    }
});

util类

mars3d.util 该类是一些常用通用静态方法

方法

方法名返回值说明
webglreport()Boolean

检测浏览器是否支持webgl

formatDegree(Number value)String

格式化经度/纬度,返回度分秒字符串

formatLength( Number val, String unit?)String

计算长度后格式化显示长度值, 可指定单位。unit支持:m、km、mile、zhang 默认自动判断km或m

formatArea( Number val, String unit?)String

计算面积后,格式化显示面积值, 可指定单位 unit支持:m、km、mu、ha 默认自动判断 m 或 km

buffer( GeoJSON Object geojson, Number width)GeoJSON Object

缓冲分析,求GeoJSON对象缓冲width米后的面

getAttrVal( Object attr)Object

简化Cesium内的属性,去掉getValue等,取最简的键值对。方便popup、tooltip等使用

getPopupForConfig( Object config, Object attr)Html String

根据config配置规则获取popup使用的html字符串

getTooltipForConfig( Object config, Object attr)Html String

根据config配置规则获取tooltip使用的html字符串

getPopup(Object cfgObject attrString title)Html String

根据cfg配置信息(可以是数组、字符串等)和attr属性,显示标题title构造html的通用处理方法。该html可以用于popup和tooltip的绑定显示

//方式1:数组配置
 var html = viewer.mars.popup.getPopup([
    { "field": "roadName", "name": "所属线路" },
    { "field": "towerId", "name": "杆塔编号" }
    ], {roadName:'Mars GIS 线路',towerId:1987}, "塔杆");

//方式2:格式字符串配置
var html = viewer.mars.popup.getPopup("名称:{NAME}
层数:{floor}", {NAME:'Mars楼1',floor:5}, "建筑物"); //方式3:回调处理 var html = viewer.mars.popup.getPopup({"type":"javascript","calback":"funname"}, {NAME:'Mars楼2',floor:8}, "建筑物");//js中需定义命名为funname的方法 //方式4:显示所有,常用于测试时 var html = viewer.mars.popup.getPopup("all", {NAME:'Mars楼3',floor:5,height:87}, "建筑物");
highlightEntity( Entity entitys, Object opts)Object

定时闪烁高亮Entity(点、线、面)

var flashingEntity = mars3d.util.highlightEntity(gonEntity, {
    time: 8,  //闪烁时长(秒)
    onEnd: function () {//结束后回调方法

    }
});
unHighlightEntity( FlashingEntity object)Object

取消定时闪烁高亮Entity(点、线、面)

mars3d.util.highlightEntity(flashingEntity);

BaseWidget 模块基础类

mars3d.widget.BaseWidget 类是平台所有widget功能模块的基础类,开发widget时需要继承该类。 该类不是直接new实例化使用的,是新建一个类继承该类后使用。

使用示例

var MyWidget = mars3d.widget.BaseWidget.extend({
    options: {                         
        resources: ['style.css'],
        view: { 
            type: "window",
            url: "view.html",
            windowOptions: {width: 250, height: 300}
        },
    },
    //初始化[仅执行1次]
    create: function () {
    },
    viewWindow:null,
    //每个窗口创建完成后调用
    winCreateOK: function (opt, result) {
        this.viewWindow = result; 
    },
    //打开激活
    activate: function () {        
    },
    //关闭释放
    disable: function () {
    }
})

Options参数选项

Option参数参数类型默认值说明
resourcesString[]null该模块依赖的外部js、css资源文件,会在实例化之前加入的页面中。 默认引用是当前widget所在目录的资源,相当于页面的资源或外部资源请以 “/” 或 “.” 或 “http” 开始命名
viewObjectnull定义模块的view页面配置信息,为空时表示当前模块无关联页面, 其中url地址规则,参考resources说明

方法

包括模块初始化、激活、释放时相关方法。
方法名返回值说明
init()void

模块初始化之前触发该方法,仅首次初始化执行1次

create()void

模块初始化,仅首次初始化执行1次

activateBase()void

激活模块初始方法,基类内部使用

beforeActivate()void

activate激活模块之前调用,基类内部使用

activate()void

打开激活模块

winCreateOK(<String> opt,<String> result)void

每个view窗口或页面创建完成后调用

disableBase()void

释放模块初始方法,基类内部使用

beforeDisable()void

disable释放模块之前调用,基类内部使用

disable()void

关闭释放模块

winFull()void

窗口最大化后触发

winMin()void

窗口最小化后触发

winRestore()void

窗口最大、小化后,被还原时触发

getHtml(<String> url,<function> callback)void

获取指定url的html信息

resetConfig()void

还原配置为config.json的初始状态

setViewVisible(<Boolean> visible)void

设置view弹窗或div的显示影藏,非释放方式

setViewCss(<Object> style)void

设置view弹窗的css,类同jquery的 $(dom).css(style)方法

widget 模块管理类

mars3d.widget 类是静态类,是平台widget模块统一管理维护的类

使用示例

var jsondata= {
    "debugger": true,
    "version": "time",
    "defaultOptions": {
        "windowOptions": {
            "position": "r",
            "maxmin": false,
            "resize": true
        },
        "autoDisable": true,
        "disableOther": true
    },
    "widgetsAtStart": [
        {
            "name": "左上角工具栏",
            "uri": "widgets/toolBar/widget.js",
            "visible": true
        }
    ],
    "widgets": [ 
        {
            "name": "图层管理",
            "uri": "widgets/manageLayers/widget.js",
            "windowOptions": {
                "position": {"top": 1,"bottom": 1,"right": 1}
            },
            "disableOther": false
        },
        {
            "name": "图上量算",
            "uri": "widgets/measure/widget.js"
        }  
    ]
};
mars3d.widget.init(viewer, jsondata);

方法

包括模块初始化,激活释放指定模块等方法
方法名返回值说明
init(<Viewer> viewer,<Object> jsondata,<String> basePath)

按配置信息初始化widget管理类

如果widgets目录不在当前页面的同级目录,在其他处时可以传入basePath参数,参数值为:widgets目录相对于当前页面的路径

activate(<Object> item,<Boolean> noDisableOther)

激活指定的模块,item可以是id或者uri或模块配置信息对象

//常用方式,直接使用uri
mars3d.widget.activate("widgets/bookmark/widget.js");
//widget中配置有id时
mars3d.widget.activate("bookmark");		
//使用对象,可以传入更多参数,具体参数参看配置项手册,。
mars3d.widget.activate({
    uri: "widgets/bookmark/widget.js",
    testdata:"widget内部使用this.config获取到这些参数",
    success:function(thisWidget){ //激活后回调方法
    }
});
                              
disable(<String> id或uri)

释放指定id或uri的widget

disableAll(<String> nodisableid?)

释放所有Widget,可以指定id或uri的widget不释放

disableGroup(<String> groupname,<String> nodisableid?)

释放释放同组widget,可以指定id或uri的widget不释放

getWidget(<String> id或uri)Object

获取指定id或uri的widget配置信息

getClass(<String> id或uri)BaseWidget

获取指定id或uri的widget的对应的实例化BaseWidget类

bindClass(<BaseWidget> class)实例化后的对象

绑定继承BaseWidget类的类到当前对应js的widget中

removeDebugeBar()

移除Widget测试栏

getDefWindowOptions()Objcet

获取全局默认的view配置信息

getCacheVersion()String

获取当前配置的版本信息,用于清除浏览器缓存

Echarts支持

该类在插件不在mars3d.js主库中,在单独的插件mars3d-visual.js文件内。

mars3d.FlowEcharts是实体类,提供对Echarts接入cesium的相关支持。

使用示例

var  option = {//参考Echarts API,支持大部分相关参数,必须传入或不同的地方看下面注释。
animation: false, //必须
GLMap: { },//必须
series: [{
    type: 'lines',
    coordinateSystem: 'GLMap',  //必须
    polyline: true,
    silent: true,
    data: busLines,     //busLines是示例数据
}]
}                 
var layerWork = new mars3d.FlowEcharts(viewer, option);

//layerWork.updateOverlay(option); //更新
                

方法

方法名返回值说明
updateOverlay(Echarts Options options)void

更新Echarts Options

show()void

显示图层

hide()void

影藏图层

destroy()void

销毁图层 ,兼容dispose方法名

MapV支持

该类在插件不在mars3d.js主库中,在单独的插件mars3d-visual.js文件内。

mars3d.MapVLayer是实体类,提供对MapV接入cesium的相关支持。

使用示例

var dataSet = new mapv.DataSet(textData);//mapv相关规范DataSet
var options = {  }//mapv相关规范Options
var layer = new mars3d.MapVLayer(viewer, dataSet, options);

方法

方法名返回值说明
updateData(MapV DataSet dataSet,MapV Options options)void

更新MapV Options

show()void

显示图层

hide()void

影藏图层

destroy()void

销毁图层