import * as Cesium from "cesium/Cesium.js";
import { isNull,} from '@/util/common'
export const calculateCenterPoint = (pointArray) => {
const sortedLongitudeArray=pointArray.map(item=>item.lng).sort();
const sortedLatitudeArray=pointArray.map(item=>item.lat).sort();
const centerLongitude=((sortedLongitudeArray[0]+sortedLongitudeArray[sortedLongitudeArray.length-1])/2);
const centerLatitude=((sortedLatitudeArray[0]+sortedLatitudeArray[sortedLatitudeArray.length-1])/2);
return [centerLongitude,centerLatitude];
}
export const cartesian3ToDegrees = (viewer, cartesian3) => {
let ellipsoid = viewer.scene.globe.ellipsoid;
let cartographic = ellipsoid.cartesianToCartographic(cartesian3);
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let lng = Cesium.Math.toDegrees(cartographic.longitude);
let alt = cartographic.height;
return [lng, lat]
}
export const pickPositionCartesian3ToLonLatHeight = (viewer, position) => {
let cartesian = viewer.scene.pickPosition(position);
if (Cesium.defined(cartesian)) {
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
let lon = Cesium.Math.toDegrees(cartographic.longitude);
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let height = cartographic.height;
return {cartesian: cartesian, lonlat: {lon: lon, lat: lat}}
}
}
export const pickEllipsoidCartesian3ToLonLatHeight = (viewer, position) => {
let cartesian = viewer.camera.pickEllipsoid(position, viewer.scene.globe.ellipsoid);
if (Cesium.defined(cartesian)) {
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
let lon = parseFloat(Cesium.Math.toDegrees(cartographic.longitude).toFixed(6));
let lat = parseFloat(Cesium.Math.toDegrees(cartographic.latitude).toFixed(6));
return {cartesian: cartesian, lonlat: {lon: lon, lat: lat}}
}
}
export const rgbaToCesiumColor = (rgba) => {
return Cesium.Color.fromCssColorString(rgba)
}
export const transFormDataFromResponse = (data) => {
let arr = JSON.parse(JSON.stringify(data))
for(let item of arr) {
item.lon = item.lon ? parseFloat((parseFloat(item.lon) / 10000000).toFixed(6)) : null
item.lat = item.lat ? parseFloat((parseFloat(item.lat) / 10000000).toFixed(6)) : null
if(!isNull(item.geoJson)) {
let pointsArr = JSON.parse(item.geoJson)
let arr = pointsArr.map(item => {
return [parseFloat((parseFloat(item.lon) / 10000000).toFixed(6)), parseFloat((parseFloat(item.lat) / 10000000).toFixed(6))]
})
item.location = pointsArr.map(item => {
item.lon = parseFloat( (parseFloat(item.lon) / 10000000).toFixed(6))
item.lat = parseFloat((parseFloat(item.lat) / 10000000).toFixed(6))
item.lonTemp = item.lon
item.latTemp = item.lat
item.edit = false
return item
})
let lal = [].concat(...arr)
item.lal = lal
}
}
return arr;
}
export const transFormDataFromResponsePort = (data) => {
let arr = JSON.parse(JSON.stringify(data))
for(let item of arr) {
if(!isNull(item.points)) {
let pointsArr = JSON.parse(item.points)
let arr = pointsArr.map(item => {
return [parseFloat(item.lon), parseFloat(item.lat)]
})
item.lal = arr
}
}
return arr;
}