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)void

导出下载文本文件

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

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

string string

文本内容

返回值:

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 可选

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

返回值:

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(strtime, options)string

格式化时长

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

时长

options object 可选

参数:

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

获取文本的对应方法

返回值:

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

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)

返回值:

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)Cesium.TimeIntervalCollection

指定时间范围内显示对象所用到的TimeIntervalCollection对象

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

指定时间范围

返回值:

JulianDate时间

使用示例:
graphic.availability = mars3d.Util.getAvailability([
  { start: "2017-08-25 08:00:00", stop: "2017-08-25 08:01:20", isStartIncluded: true, isStopIncluded: false },
  { start: "2017-08-25 09:00:00", stop: "2017-08-25 09:02:30" }
])

graphic.availability = mars3d.Util.getAvailability({ start: "2017-08-25 08:00:00", stop: "2017-08-25 08:01:20", isStartIncluded: true, isStopIncluded: false })

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

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

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

数字

options object {} 可选

参数对象:

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

圆形图标的整体半径大小(单位:像素)

color string 'rgba(181, 226, 140, 0.6)' 可选

圆形图标的背景颜色

opacity number 0.5 可选

圆形图标的透明度

borderWidth number 5 可选

圆形图标的边框宽度(单位:像素),0不显示

borderColor string 'rgba(110, 204, 57, 0.5)' 可选

圆形图标的边框背景颜色

borderOpacity number 0.6 可选

圆形图标边框的透明度

fontColor string '#ffffff' 可选

数字的颜色

返回值:

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)Cesium.JulianDate

获取JulianDate时间

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

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

返回值:

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)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 可选

数据属性对象

返回值:

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时的,编辑输入框宽度值

返回值:

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' 可选

文本的基线。

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.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