# Util
查阅Leaflet API

#### Util()
util/Util.js 1

常用静态方法

### 方法

#### static mars2d.Util.alert(msg, title) → void
util/Util.js 1268

执行alert弹窗

参数名称 | 类型 | 描述信息
--- | --- | ---
`msg` | String | 弹窗内的内容
`title` | String | 可选 弹窗的标题

##### 返回值:

无

#### static mars2d.Util.clone(obj, removeKeys, level) → Object
util/Util.js 607

复制克隆对象

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`obj` | Object |  | 原始对象
`removeKeys` | Array.<String> | `[]` | 可选 不复制的属性名 数组
`level` | Number | `5` | 可选 拷贝的层级最大深度,避免死循环

##### 返回值:

克隆后的对象

#### static mars2d.Util.createGuid(prefix) → String
util/Util.js 236

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`prefix` | String | `'m'` | 可选 前缀

##### 返回值:

字符串

#### static mars2d.Util.defined(a) → Boolean
util/Util.js 17

判断对象是否为空

参数名称 | 类型 | 描述信息
--- | --- | ---
`a` | * | 判断的对象

##### 返回值:

对象是否为空

#### static mars2d.Util.downloadBase64Image(name, base64) → void
util/Util.js 1238

导出下载图片文件

参数名称 | 类型 | 描述信息
--- | --- | ---
`name` | string | 图片文件名称， 后缀名默认为.png
`base64` | string | 图片内容，base64格式

##### 返回值:

无

#### static mars2d.Util.downloadFile(fileName, string, mimeType) → void
util/Util.js 1255

导出下载文本文件

参数名称 | 类型 | 描述信息
--- | --- | ---
`fileName` | string | 文件完整名称，需要含后缀名
`string` | string | 文本内容
`mimeType` | string | 可选 MIME类型,如：'text/plain'、'text/html'、'application/json'

##### 返回值:

无

#### static mars2d.Util.featureToGraphic(feature, options) → Object
util/Util.js 817

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`feature` | Object |  | geojson单个Feature对象
`options` | Object | `{}` | 可选 参数，包括：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`type` | GraphicType | String |  | 可选 转为指定的类型
`style` | Object | `{}` | 可选 Style样式，每种不同类型数据都有不同的样式，具体见各矢量数据的style参数。`GraphicType`
`crs` | String |  | 可选 原始数据的坐标系，如'EPSG:3857' （可以从 http://epsg.io查询）
`onPointTrans` | function |  | 可选 坐标转换方法，可用于对每个坐标做额外转换处理
`filter` | function |  | 可选 数据筛选方法，方法体内返回false时排除数据 filter:function(feature){return true}

##### 返回值:

Graphic构造参数（用于创建Graphic）

#### static mars2d.Util.fetchBlob(options) → Promise.<Object>
util/Util.js 1393

请求服务返回blob

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | Object | 请求参数
参数名称 | 类型 | 描述信息
--- | --- | ---
`url` | String | 服务URL地址

##### 返回值:

返回Promise异步处理结果

#### static mars2d.Util.fetchJson(options) → Promise.<Object>
util/Util.js 1371

请求服务返回json结果，方法是基于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 mars2d.Util.formatDate(date, fmt) → string
util/Util.js 1318

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`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 位的数字).

##### 返回值:

指定格式的字符串

##### 使用示例:

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

#### static mars2d.Util.formatNum(num, digits) → Number
util/Util.js 116

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`num` | Number |  | 数字
`digits` | Number | `0` | 可选 小数位数

##### 返回值:

返回digits指定小数位的数字

#### static mars2d.Util.formatTime(strtime) → String
util/Util.js 1347

格式化时长

参数名称 | 类型 | 描述信息
--- | --- | ---
`strtime` | Number | 时长

##### 返回值:

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

#### static mars2d.Util.funDebounce(fn, delay) → function
util/Util.js 1526

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`fn` | function | 执行的方法
`delay` | number | 节流时间范围，毫秒数

##### 返回值:

包含一层的替代方法

##### 使用示例:

    let newFun = mars2d.Util.funDebounce(this._changeFun, 500)
    target.on("change", newFun)  // 解绑用 target.off("change", newFun)

#### static mars2d.Util.funThrottle(fn, delay) → function
util/Util.js 1494

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`fn` | function | 执行的方法
`delay` | number | 节流时间范围，毫秒数

##### 返回值:

包含一层的替代方法

##### 使用示例:

    let newFun = mars2d.Util.funThrottle(this._changeFun, 500)
    target.on("change", newFun)  // 解绑用 target.off("change", newFun)

#### static mars2d.Util.geoJsonToGraphics(geojson, options) → Array.<Object>
util/Util.js 780

GeoJSON 转为 Graphic构造参数数组 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`
`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查询）
`filter` | function |  | 可选 数据筛选方法，方法体内返回false时排除数据 filter:function(feature){return true}

##### 返回值:

Graphic构造参数数组

#### static mars2d.Util.getArrayRandomOne(arr) → *
util/Util.js 667

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`arr` | Array | 数组

##### 返回值:

获取到的随机元素

#### static mars2d.Util.getAttrVal(attr, options) → Object
util/Util.js 497

取属性值，最简的键值对。 方便popup、tooltip等构造方法使用

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`attr` | * |  | 属性对象
`options` | Object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`onlySimpleType` | Boolean |  | 是否只获取简易类型的对象
`removeKeys` | Array.<String> | `[]` | 可选 不复制的属性名 数组

##### 返回值:

最简的键值对属性对象

#### static mars2d.Util.getGeoJsonFeatures(geojson) → Array.<Object>
util/Util.js 747

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`geojson` | Object | geojson对象

##### 返回值:

features数组集合

#### static mars2d.Util.getStrLength(str) → Number
util/Util.js 171

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`str` | String | 字符串

##### 返回值:

字符串长度

#### static mars2d.Util.getSymbolStyle(symbol, attr) → Object
util/Util.js 702

根据属性 和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 mars2d.Util.getTemplateHtml(options) → String
util/Util.js 289

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | Object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`attr` | Object |  | 属性值
`template` | String | Array.<Globe.getTemplateHtml_template> | function | * |  | 模版配置，支持：'all'、数组、字符串模板
`title` | String |  | 可选 标题
`edit` | Boolean | `false` | 可选 是否返回编辑输入框
`width` | Number | `190` | 可选 edit:true时的，编辑输入框宽度值

##### 返回值:

Html字符串

##### 使用示例:

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

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

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

#### static mars2d.Util.isBoolean(obj) → Boolean
util/Util.js 47

判断对象是否为Boolean类型

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | * | 对象

##### 返回值:

是否为Boolean类型

#### static mars2d.Util.isFunction(val) → Boolean
util/Util.js 85

判断对象是否为function方法

参数名称 | 类型 | 描述信息
--- | --- | ---
`val` | * | 对象

##### 返回值:

是否为function方法

#### static mars2d.Util.isNumber(obj) → Boolean
util/Util.js 29

判断对象是否为Number类型

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | * | 对象

##### 返回值:

是否为Number类型

#### static mars2d.Util.isObject(obj) → Boolean
util/Util.js 56

判断对象是否为Object类型

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | * | 对象

##### 返回值:

是否为Object类型

#### static mars2d.Util.isPlainObject(obj) → Boolean
util/Util.js 68

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | * | 对象

##### 返回值:

是否为Object类型

#### static mars2d.Util.isSimpleType(value) → Boolean
util/Util.js 94

判断对象是否为简单类型（包括：String\Boolean\Number\Array）

参数名称 | 类型 | 描述信息
--- | --- | ---
`value` | * | 对象

##### 返回值:

是否为简单类型（包括：String\Boolean\Number\Array）

#### static mars2d.Util.isString(obj) → Boolean
util/Util.js 38

判断对象是否为String类型

参数名称 | 类型 | 描述信息
--- | --- | ---
`obj` | * | 对象

##### 返回值:

是否为String类型

#### static mars2d.Util.merge(dest, sources) → Object
util/Util.js 567

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`dest` | Object | 目标对象
`sources` | Object | 需要融入合并的对象

##### 返回值:

融合后的对象

#### static mars2d.Util.mm2px(mm) → Number
util/Util.js 1466

毫米数值 转为 像素数值

参数名称 | 类型 | 描述信息
--- | --- | ---
`mm` | Number | 毫米数值

##### 返回值:

像素数值

#### static mars2d.Util.msg(msg) → void
util/Util.js 1294

执行msg提示窗（自动消失）

参数名称 | 类型 | 描述信息
--- | --- | ---
`msg` | String | 弹窗内的内容

##### 返回值:

无

#### static mars2d.Util.padLeft0(numStr, n) → String
util/Util.js 129

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

参数名称 | 类型 | 描述信息
--- | --- | ---
`numStr` | Number | String | 数字对象,示例：1234
`n` | Number | 指定长度，示例：8

##### 返回值:

补零后的指定长度的字符串，示例：'00001234'

#### static mars2d.Util.randomColor() → String
util/Util.js 1452

获取随机颜色

##### 返回值:

/返回rgb(r,g,b)格式颜色

#### static mars2d.Util.removeArrayItem(arr, val) → Boolean
util/Util.js 680

移除数组中的指定对象

参数名称 | 类型 | 描述信息
--- | --- | ---
`arr` | Array | 数组
`val` | * | 需要移除的数组元素对象

##### 返回值:

对象是否移除成功

#### static mars2d.Util.sendAjax(options) → Promise.<Object>
util/Util.js 1421

请求服务返回结果，方法是基于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 mars2d.Util.splitWords(str) → Array.<String>
util/Util.js 146

根据空格分割字符串，并返回字符串数组（会自动去掉首位空格）

参数名称 | 类型 | 描述信息
--- | --- | ---
`str` | String | 字符串

##### 返回值:

分割后的字符串数组

#### static mars2d.Util.template(str, data, toEmpty) → String
util/Util.js 193

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

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`str` | String |  | 格式化字符串模版，属性字段为大括号，如 {name}
`data` | Object |  | 数据对象
`toEmpty` | Boolean | `false` | 可选 是否将模板中未匹配项转为空值

##### 返回值:

返回字符串

##### 使用示例:

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

#### static mars2d.Util.trim(str) → String
util/Util.js 157

除去字符串首尾的空格

参数名称 | 类型 | 描述信息
--- | --- | ---
`str` | String | 字符串

##### 返回值:

除去首尾空格的字符串