87 lines
3.5 KiB
JavaScript
87 lines
3.5 KiB
JavaScript
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;
|
||
},
|
||
/**
|
||
* 全局唯一标识符(GUID,Globally 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;
|
||
} |