Util

Util()

常用静态方法

成员(属性)

static constant mars3d.Util.isMars3DCesium : boolean

判断当前Cesium库 是否mars3d修改后的版本(mars3d-cesium库)

static mars3d.Util.lastId : number

最后一个唯一ID,在stamp方法使用的

方法

static mars3d.Util.alert(msg, title)void

执行alert弹窗(手动单击确定关闭窗口)

参数名称 类型 描述信息
msg string

弹窗内的内容

title string 可选

弹窗的标题

返回值:

static mars3d.Util.arcgisToGeoJSON(arcgis, idAttr)object

arcgis服务的json格式 转 geojson格式

参数名称 类型 默认值 描述信息
arcgis object

arcgis服务的json格式

idAttr string 'OBJECTID' 可选

id字段名称

返回值:

geojson格式

static mars3d.Util.clone(obj, removeKeys, level)object

复制克隆对象

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

原始对象

removeKeys Array.<string> [] 可选

不复制的属性名 数组

level number 5 可选

拷贝的层级最大深度,避免死循环

返回值:

克隆后的对象

static mars3d.Util.createGuid(prefix)string

获取随机唯一uuid字符串,包含数字、大写字母、小写字母

参数名称 类型 默认值 描述信息
prefix string 'm-' 可选

前缀

返回值:

字符串

static mars3d.Util.downloadBase64Image(name, base64)void

导出下载图片文件

参数名称 类型 描述信息
name string

图片文件名称, 后缀名默认为.png

base64 string

图片内容,base64格式

返回值:

static mars3d.Util.downloadFile(fileName, string, mimeType)void

导出下载文本文件

参数名称 类型 描述信息
fileName string

文件完整名称,需要含后缀名

string string

文本内容

mimeType string 可选

MIME类型,如:'text/plain'、'text/html'、'application/json'

返回值:

static mars3d.Util.exitFullscreen()boolean

退出全屏

返回值:

是否全屏

static mars3d.Util.featureToGraphic(feature, options)object

GeoJSON格式的Feature单个对象转为 Graphic构造参数(用于创建BaseGraphic

参数名称 类型 默认值 描述信息
feature object

geojson单个Feature对象

options object {} 可选

参数,包括:

参数名称 类型 默认值 描述信息
type GraphicType | string 可选

转为指定的类型

style object {} 可选

Style样式,每种不同类型数据都有不同的样式,具体见各矢量数据的style参数。GraphicType // * @param {boolean} [options.style.merge] 是否合并并覆盖json中已有的style,默认不合并,仅适用style配置。

crs string 可选

原始数据的坐标系,如'EPSG:3857' (可以从 http://epsg.io查询)

simplify object 可选

是否简化坐标点位,为空时不简化

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

简化的程度,传值是经纬度的小数位

highQuality boolean true 可选

是否花更多的时间用不同的算法创建更高质量的简化

mutate boolean true 可选

是否允许对输入进行变异(如果为true,则显著提高性能)

onPointTrans function 可选

坐标转换方法,可用于对每个坐标做额外转换处理

filter function 可选

数据筛选方法,方法体内返回false时排除数据 filter:function(feature){return true}

返回值:

Graphic构造参数(用于创建BaseGraphic),其中多面的最大一个面会有isMultiMax为true的属性

static mars3d.Util.fetchJson(options)Promise.<object>

请求服务返回JSON结果

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

请求参数

参数名称 类型 默认值 描述信息
url string

服务URL地址

queryParameters object 可选

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

proxy string 可选

加载资源时要使用的代理服务url。

templateValues object 可选

一个对象,用于替换Url中的模板值的键/值对

headers object 可选

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

method string "get" 可选

请求类型

返回值:

返回Promise异步处理结果,对象为JSON数据

static mars3d.Util.formatDate(date, fmt)string

将 时间 转化为指定格式的字符串

参数名称 类型 默认值 描述信息
date Date

时间

fmt string "yyyy-MM-dd HH:mm:ss" 可选

格式模版,月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符; 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字).

返回值:

指定格式的字符串

使用示例:
mars3d.Util.formatDate(date,"yyyy-MM-dd HH:mm:ss") ==> 2017-08-25 08:08:00
mars3d.Util.formatDate(date,"yyyy-MM-dd HH:mm:ss.S") ==> 2017-08-25 08:08:00.423
mars3d.Util.formatDate(date,"yyyy-M-d HH:mm:ss") ==> 2017-8-5 08:08:00

static mars3d.Util.formatNum(num, digits)number

格式化数字,返回指定小数位的数字

参数名称 类型 默认值 描述信息
num number

数字

digits number 0 可选

小数位数

返回值:

返回digits指定小数位的数字

static mars3d.Util.formatTime(timeNum, options)string

格式化时长

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

时长

options object 可选

参数:

参数名称 类型 描述信息
getLangText function 可选

获取文本的对应方法

返回值:

格式化字符串,如XX小时XX分钟

static mars3d.Util.funDebounce(fn, delay)function

事件中使用的 函数防抖, 说明:在delay毫秒内的多次调用操作,仅在最后一次调用时触发一次fn函数。

参数名称 类型 描述信息
fn function

执行的方法

delay number

节流时间范围,毫秒数

返回值:

包含一层的替代方法

使用示例:
let newFun = mars3d.Util.funDebounce(this._changeFun, 500)
target.on("change", newFun)  // 解绑用 target.off("change", newFun)

static mars3d.Util.funThrottle(fn, delay)function

事件中使用的 函数节流, 说明:稀释fn函数的执行频率,但不管事件触发有多频繁,都会保证在delay毫秒内一定会执行一次fn函数

参数名称 类型 描述信息
fn function

执行的方法

delay number

节流时间范围,毫秒数

返回值:

包含一层的替代方法

使用示例:
let newFun = mars3d.Util.funThrottle(this._changeFun, 500)
target.on("change", newFun)  // 解绑用 target.off("change", newFun)

static mars3d.Util.geojsonToArcGIS(geojson, idAttr)object

geojson格式 转 arcgis服务的json格式

参数名称 类型 默认值 描述信息
geojson object

geojson格式

idAttr string 'OBJECTID' 可选

id字段名称

返回值:

arcgis服务的json格式

static mars3d.Util.geoJsonToGraphics(geojson, options)Array.<object>

GeoJSON 转为 Graphic构造参数数组(用于创建BaseGraphic) style有3种方式控制: 1.传type及style参数;2.传symbol参数;3.数据本身的feature.properties.style; 优先级为:1>2>3

参数名称 类型 默认值 描述信息
geojson object

geojson对象

options object {} 可选

控制参数

参数名称 类型 默认值 描述信息
type GraphicType | string 可选

转为指定的类型

style object {} 可选

Style样式,每种不同类型数据都有不同的样式,具体见各矢量数据的style参数。GraphicType // * @param {boolean} [options.style.merge] 是否合并并覆盖json中已有的style,默认不合并,仅适用style配置。

symbol object 可选

symbol配置,与style二选一

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

标识数据类型

merge boolean 可选

是否合并并覆盖json中已有的style,默认不合并,仅适用symbol配置。

styleOptions object 可选

Style样式,每种不同类型数据都有不同的样式,具体见各矢量数据的style参数。GraphicType

styleField string 可选

按 styleField 属性设置不同样式。

styleFieldOptions object 可选

按styleField值与对应style样式的键值对象。

callback function 可选

自定义判断处理返回style ,示例:callback: function (attr, styleOpt){ return { color: "#ff0000" }; }

crs string 可选

原始数据的坐标系,如'EPSG:3857' (可以从 http://epsg.io查询)

simplify object 可选

是否简化坐标点位,为空时不简化

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

简化的程度,传值是经纬度的小数位

highQuality boolean true 可选

是否花更多的时间用不同的算法创建更高质量的简化

mutate boolean true 可选

是否允许对输入进行变异(如果为true,则显著提高性能)

onPointTrans function 可选

坐标转换方法,可用于对每个坐标做额外转换处理,比如坐标纠偏 onPointTrans: mars3d.PointUtil.getTransFun(mars3d.ChinaCRS.GCJ02, map.chinaCRS)

filter function 可选

数据筛选方法,方法体内返回false时排除数据 filter:function(feature){return true}

返回值:

Graphic构造参数数组(用于创建BaseGraphic),其中多面的最大一个面会有isMultiMax为true的属性

static mars3d.Util.get3DTileFeatureAttr(feature)object

取3DTile模型瓦片的feature原有属性

参数名称 类型 描述信息
feature Cesium.Cesium3DTileFeature | *

Cesium内的属性对象

返回值:

最简的键值对属性对象

static mars3d.Util.getArrayRandomOne(arr)*

随机获取数组中的一个元素

参数名称 类型 描述信息
arr Array

数组

返回值:

获取到的随机元素

static mars3d.Util.getAttrVal(attr, options)object

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

参数名称 类型 默认值 描述信息
attr *

Cesium内的属性对象

options object {} 可选

参数对象:

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

是否只获取简易类型的对象

showNull boolean false 可选

是否显示空值

noArray boolean 可选

onlySimpleType:true时,并且不取数组

返回值:

最简的键值对属性对象

static mars3d.Util.getAvailability(availability, clock)Cesium.TimeIntervalCollection

指定时间范围内显示对象所用到的TimeIntervalCollection对象 SDK内 graphic.availability 等赋值时会自动调用该方法转换为cesium本身对象。

参数名称 类型 描述信息
availability Cesium.TimeIntervalCollection | Cesium.TimeInterval | Array | object

指定时间范围

clock Cesium.Clock 可选

时钟对象,如果传数字秒数时,需要取 clock.startTime

返回值:

JulianDate时间

static mars3d.Util.getAvailabilityJson(availability)Array.<object>

获取时间范围的简单对象数组,用于对象的编辑

参数名称 类型 描述信息
availability Cesium.TimeIntervalCollection

指定时间范围

返回值:

JulianDate时间

static mars3d.Util.getCesiumColor(color, defval, time)Cesium.Color

获取Cesium颜色对象

参数名称 类型 默认值 描述信息
color string | Cesium.Color | function

Cesium的类名,方便识别判断

defval Cesium.Color 可选

默认值

time Cesium.JulianDate Cesium.JulianDate.now() 可选

如果具有时间属于时,取指定的时间的值

返回值:

颜色值

static mars3d.Util.getCesiumValue(obj, ClasName, time)*

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

参数名称 类型 默认值 描述信息
obj *

Cesium对象值

ClasName * 可选

Cesium的类名,方便识别判断

time Cesium.JulianDate Cesium.JulianDate.now() 可选

如果具有时间属于时,取指定的时间的值

返回值:

最终value值

static mars3d.Util.getCircleImage(count, options)string

获取用于聚合的圆形图标对象

参数名称 类型 默认值 描述信息
count number

数字

options object {} 可选

参数对象:

返回值:

base64图片对象,包含 data URI 的DOMString。

static mars3d.Util.getColorByStyle(style, defval)Cesium.Color

根据配置信息获取Cesium颜色对象

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

配置信息

参数名称 类型 描述信息
color string | Cesium.Color

颜色值

opacity number 可选

透明度

randomColor boolean 可选

是否随机色

defval Cesium.Color Cesium.Color.YELLOW 可选

默认值

返回值:

颜色值

static mars3d.Util.getExplorerInfo()object

获取浏览器类型及版本

返回值:

浏览器类型及版本,示例:{ type: 'Chrome', version: 71 }

static mars3d.Util.getGeoJsonFeatures(geojson)Array.<object>

获取GeoJSON中的features数组集合(自动判断数据来源)

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

geojson对象

返回值:

features数组集合

static mars3d.Util.getGlobalId()number

获取最新的全局唯一ID

返回值:

全局唯一ID ( ++lastId )

static mars3d.Util.getJulianDate(currTime, startTime)Cesium.JulianDate

获取JulianDate时间

参数名称 类型 描述信息
currTime Cesium.JulianDate | Date | string

指定时间。当为String时,可以传入 '2021-01-01 12:13:00';

startTime Cesium.JulianDate 可选

开始对象,如果传数字秒数时,是相当于startTime的增加秒数

返回值:

JulianDate时间

static mars3d.Util.getRequest()object

获取当前页面的url中的?传入参数对象集合

返回值:

参数名与参数值的键值对

static mars3d.Util.getRequestByName(name)string

获取当前页面的url中的?传入的指定参数值

参数名称 类型 描述信息
name string

指定参数名称

返回值:

获取到的参数值

static mars3d.Util.getStrLength(str)number

获取字符串长度,区分中文和英文

参数名称 类型 描述信息
str string

字符串

返回值:

字符串长度

static mars3d.Util.getSymbolStyle(symbol, attr, callbackResult)object

根据属性 和symbol配置 取style样式信息

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

symbol配置

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

Style样式,每种不同类型数据都有不同的样式,具体见各矢量数据的style参数。GraphicType

styleField string 可选

按 styleField 属性设置不同样式。

styleFieldOptions object 可选

按styleField值与对应style样式的键值对象。

callback function 可选

自定义判断处理返回style ,示例:callback: function (attr, styleOpt){ return { color: "#ff0000" }; }

attr object 可选

数据属性对象

callbackResult object 可选

callback时的第3个回调参数

返回值:

style样式

static mars3d.Util.getTemplateHtml(options)string

获取Popup或Tooltip格式化Html字符串

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

参数对象:

参数名称 类型 默认值 描述信息
attr object

属性值

template string | Array.<Globe.getTemplateHtml_template> | function | *

模版配置,支持:'all'、数组、字符串模板

showNull boolean false 可选

是否显示空值

title string 可选

标题

edit boolean false 可选

是否返回编辑输入框

width number 190 可选

edit:true时的,编辑输入框宽度值

templateEmptyStr boolean true 可选

template是字符串时,是否将模板中未匹配项转为空值

返回值:

Html字符串

使用示例:
//template可以是'all' ,返回数据的全部属性信息
tiles3dLayer.bindPopup(function (event) {
  var attr = event.graphic.attr
  return mars3d.Util.getTemplateHtml({ title: '桥梁', template: 'all', attr: attr })
})

//template可以是格式化字符串模板
var html = mars3d.Util.getTemplateHtml({ title: '火星项目', template:  "名称:{项目名称}<br />类型:{设施类型}<br />面积:{用地面积}亩<br />位置:{具体位置}", attr: item })

//可以是数组的template,按数组顺序构造,并转义字段名称
//
var html = mars3d.Util.getTemplateHtml({
  title: '塔杆',
  template: [
    { field: 'roadName', name: '所属线路' },
    { field: 'towerId', name: '杆塔编号' },
    { field: '杆塔型号', name: '杆塔型号' },
    { field: '杆塔性质', name: '杆塔性质' },
    { field: '杆塔类型', name: '杆塔类型' },
    { field: '设计单位', name: '设计单位' },
    { field: 'height', name: '海拔高度' },
  ],
  attr: item,
})

static mars3d.Util.getTextImage(text, textStyle)HTMLCanvasElement

文字转base64图片

参数名称 类型 默认值 描述信息
text string

文字内容

textStyle object {} 可选

参数对象:

参数名称 类型 默认值 描述信息
font string '10px sans-serif' 可选

使用的CSS字体。

textBaseline string 'bottom' 可选

文本的基线。

spacing number 可选

字间距

fill boolean true 可选

是否填充文本。

fillColor Cesium.Color Cesium.Color.WHITE 可选

填充颜色。

stroke boolean false 可选

是否描边文本。

strokeWidth number 1 可选

文本描边的宽度。

strokeColor Cesium.Color Cesium.Color.BLACK 可选

文本描边的颜色。

background boolean false 可选

是否背景色。

backgroundColor Cesium.Color Cesium.Color.TRANSPARENT 可选

画布的背景色。

padding number 0 可选

要在文本周围添加的填充的像素大小。

outline boolean false 可选

是否边框

outlineWidth number 4 可选

边框的宽度。

outlineColor Cesium.Color fillColor 可选

矩形边框的颜色。

返回值:

canvas对象

static mars3d.Util.getUrlResource(config, templateValues)Cesium.Resource

根据图层的config的配置信息,自动加上代理等配置返回Resource对象

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

图层的配置信息

参数名称 类型 描述信息
url string

url地址

proxy string 可选

加载资源时要使用的代理服务url。

templateValues object 可选

一个对象,用于替换Url中的模板值的键/值对

queryParameters object 可选

一个对象,其中包含在检索资源时将发送的查询参数。比如:queryParameters: {'access_token': '123-435-456-000'}

headers object 可选

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

templateValues object 可选

,同config.templateValues,便于合并. PS: config.templateValues优先级高于templateValues

返回值:

Resource对象

static mars3d.Util.heightToZoom(altitude)number

根据当前高度获取地图层级

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

高度值

返回值:

地图层级,通常为 0-21

static mars3d.Util.isBoolean(obj)boolean

判断对象是否为Boolean类型

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

对象

返回值:

是否为Boolean类型

static mars3d.Util.isFunction(val)boolean

判断对象是否为function方法

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

对象

返回值:

是否为function方法

static mars3d.Util.isNumber(obj)boolean

判断对象是否为Number类型

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

对象

返回值:

是否为Number类型

static mars3d.Util.isObject(obj)boolean

判断对象是否为Object类型

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

对象

返回值:

是否为Object类型

static mars3d.Util.isPCBroswer()boolean

当前是否是PC电脑浏览器。

返回值:

是否是PC电脑浏览器。

static mars3d.Util.isPlainObject(obj)boolean

判断对象是否为纯粹的Object类型 (所谓"纯粹的对象",就是该对象是通过"{}"或"new Object"创建的)

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

对象

返回值:

是否为Object类型

static mars3d.Util.isSimpleType(value)boolean

判断对象是否为简单类型(包括:String\Boolean\Number\Array)

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

对象

返回值:

是否为简单类型(包括:String\Boolean\Number\Array)

static mars3d.Util.isString(obj)boolean

判断对象是否为String类型

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

对象

返回值:

是否为String类型

static mars3d.Util.measureCanvasText(context, text, textStyle)HTMLCanvasElement

继续期望绘制在Canvas上的文本的高宽值, 获取结果后可以执行:context.fillText(item.text, item.x, item.y, spacingWidth)

参数名称 类型 默认值 描述信息
context string

const context = canvas.getContext("2d")

text string

文字内容

textStyle object {} 可选

参数对象:

参数名称 类型 默认值 描述信息
font string '10px sans-serif' 可选

使用的CSS字体。

spacing number 可选

字间距

fill boolean true 可选

是否填充文本。

stroke boolean false 可选

是否描边文本。

padding number 0 可选

要在文本周围添加的填充的像素大小。

返回值:

canvas对象

static mars3d.Util.merge(dest, sources)object

合并对象,对二级子属性为Object的对象也会进行融合。

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

目标对象

sources object

需要融入合并的对象

返回值:

融合后的对象

static mars3d.Util.msg(msg)void

执行msg提示窗(自动消失)

参数名称 类型 描述信息
msg string

弹窗内的内容

返回值:

static mars3d.Util.padLeft0(numStr, n)string

按指定长度,对数字进行补零,返回指定长度的字符串

参数名称 类型 描述信息
numStr number | string

数字对象,示例:1234

n number

指定长度,示例:8

返回值:

补零后的指定长度的字符串,示例:'00001234'

static mars3d.Util.removeArrayItem(arr, val)boolean

移除数组中的指定对象

参数名称 类型 描述信息
arr Array

数组

val *

需要移除的数组元素对象

返回值:

对象是否移除成功

static mars3d.Util.requestFullscreen(container)boolean

进入全屏

参数名称 类型 描述信息
container HTMLElement

指定DOM元素,如 map.container

返回值:

是否全屏

static mars3d.Util.sendAjax(options)Promise.<object>

请求服务返回结果,方法是基于axios库精简的

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

请求参数

参数名称 类型 默认值 描述信息
url string

服务URL地址

queryParameters object 可选

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

method string "get" 可选

请求类型

timeout number 0 可选

是否超时

headers object 可选

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

返回值:

返回Promise异步处理结果,对象为response对象

static mars3d.Util.splitWords(str)Array.<string>

根据空格分割字符串,并返回字符串数组(会自动去掉首位空格)

参数名称 类型 描述信息
str string

字符串

返回值:

分割后的字符串数组

static mars3d.Util.stampGlobalId(obj)number

标记对象,给对象赋予对象的全局唯一ID(_mars3d_id值)

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

对象

返回值:

全局唯一ID ( ++lastId )

static mars3d.Util.template(str, data, toEmpty)string

根据数据和格式化字符串模板,返回字符串

参数名称 类型 默认值 描述信息
str string

格式化字符串模版,属性字段为大括号,如 {name}

data object

数据对象

toEmpty boolean false 可选

是否将模板中未匹配项转为空值

返回值:

返回字符串

使用示例:
var str = mars3d.Util.template("<div>名称:{name}</div>", { name:"火星科技", date:"2017-8-25"} );
 //str结果为 : "<div>名称:火星科技</div>"

static mars3d.Util.trim(str)string

除去字符串首尾的空格

参数名称 类型 描述信息
str string

字符串

返回值:

除去首尾空格的字符串

static mars3d.Util.webglerror()void

执行检测浏览器不支持webgl后的alert错误提示弹窗

返回值:

static mars3d.Util.webglreport()boolean

检测当前浏览器是否支持WebGL

返回值:

是否支持WebGL