Cesium常用坐标转:
//lat lon radians to cartesian3
__viewer.getCartesian3FromRadians = function (lng, lat, height) {
var cartesian3 = Cesium.Cartesian3.fromRadians(lng, lat, height) //lng\lat为弧度制
return cartesian3;
}
//lat lon to cartesian3
__viewer.getCartesian3FromDegrees = function (lng, lat, height) {
var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height)
return cartesian3;
}
//cartesian3 to windows positions
__viewer.getWindowsPositionByCartesian3 = function (cartesian3) {
var windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(__viewer.scene, cartesian3);
return windowPosition;
}
//windows positions to cartesian3
__viewer.getCoordinateByWindowsPosition = function (windowsPosition) {
var ray = __viewer.camera.getPickRay(windowsPosition);
var cartesian3 = __viewer.scene.globe.pick(ray, __viewer.scene);
//__viewer.scene.pickPosition(movement.position);
// if use scene.pickPosition, need to set follow config:
//__viewer.scene.globe.depthTestAgainstTerrain = true;
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lon = Cesium.Math.toDegrees(cartographic.longitude);
return { lat: lat, lon: lon };
}
//cartesian3 to cartographic
__viewer.getCartographicFromCartesian3 = function (cartesian3) {
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
//Cesium.Ellipsoid.WGS84.cartesianToCartographic(position);
//var ellipsoid=viewer.scene.globe.ellipsoid;
return cartographic;
}
//cartographic to cartesian3
__viewer.getCartesian3FromCartographic = function (cartographic) {
var cartesian3 = Cesium.Ellipsoid.WGS84.cartographicToCartesian(cartographic);
return cartesian3;
}
//cartesian3 to coordinate
__viewer.getCoordinateFromCartesian3 = function (cartesian3) {
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
var lat = Cesium.Math.toDegrees(cartographic.latitude);
var lon = Cesium.Math.toDegrees(cartographic.longitude);
var alt = cartographic.height;
alt = roundFun(alt, 7);
return { lat: lat, lon: lon, height: alt };
}
function roundFun(value, n) {
return Math.round(value * Math.pow(10, n)) / Math.pow(10, n);
}