meface/docs/.vuepress/components/js/cUtils.js

87 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export default {
cartesianToLnglat:(cartesian)=>{
// //笛卡尔空间坐标转WGS84弧度.
// const ellipsoid84 = Cesium.Ellipsoid.wgs84;
// const cartographicPosition = ellipsoid84.cartesianToCartographic(cartesian);
const cartographicPosition = Cesium.Cartographic.fromCartesian(cartesian);
return [
Cesium.Math.toDegrees(cartographicPosition.longitude),
Cesium.Math.toDegrees(cartographicPosition.latitude),
]
},
getCenterByPositions:(cartesianArr)=>{
let points = [];
cartesianArr.forEach(cartesianCoor=>{
let cartesian = new Cesium.Cartesian3(cartesianCoor.x, cartesianCoor.y, cartesianCoor.z)
points.push(cUtil.cartesianToLnglat(cartesian))
})
var features = turf.points(points);
let center = turf.center(features);
return center.geometry.coordinates;
},
/**
* 全局唯一标识符GUIDGlobally Unique Identifier也称作 UUID(Universally Unique IDentifier) 。
* 可以指定长度
* @param len
* @param radix
* @returns {string}
*/
uuid:function(len, radix) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
var uuid = [], i;
radix = radix || chars.length;
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
} else {
// rfc4122, version 4 form
var r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
},
focus:(data,angle=-45,h=200)=>{
const length = (Math.PI * Cesium.Ellipsoid.WGS84.minimumRadius) / 180;
let dist = h/Math.tan( Math.abs(angle) * Math.PI/180)/length;
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(data.lng, data.lat-dist, 200.0),
orientation: {
heading: 0.0,
pitch: Cesium.Math.toRadians(angle),
roll: 0.0,
},
});
},
}
// 对Date的扩展将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}