必威体育Betway必威体育官网
当前位置:首页 > IT技术

cesium 笛卡尔坐标(单位:米) 与 经纬度(单位:弧度/度) 之间的转换。

时间:2019-07-06 04:41:11来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

弧度单位

this.model.readyPromise.then(function (tileset) {
                //记录模型原始的中心点
                var boundingSphere = tileset.boundingSphere;
                that.boundingSphere = boundingSphere;
                //模型原始的中心点。此处是笛卡尔坐标,单位:米。
                var position = boundingSphere.center; 
                // 此处是经纬度,单位:弧度;高度单位:米。
                var catographic = Cesium.Cartographic.fromCartesian(position);

                var height = Number(catographic.height.toFixed(2));
                // 此处是经纬度,单位:度。
                var longitude = Number(Cesium.Math.toDegrees(catographic.longitude).toFixed(6));
                var latitude = Number(Cesium.Math.toDegrees(catographic.latitude).toFixed(6));
                that.originalCenter = { x: longitude, y: latitude, z: height };
                console.log((that.config.name || "") + " 模型原始位置:" + JSON.stringify(that.originalCenter));


//offsetopt.x,y不能多次更改
        updateMatrix: function (offsetopt) {
            if (this.model == null) return;

            console.log(" 模型修改后位置:" + JSON.stringify(offsetopt));

            var boundingSphere = this.model.boundingSphere;
            var catographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
            var surface = Cesium.Cartesian3.fromRadians(catographic.longitude, catographic.latitude, 0.0);
            //  此处展示了,从经纬度(单位:度)-->笛卡尔坐标(单位:米)。
            var offset = Cesium.Cartesian3.fromDegrees(offsetopt.x, offsetopt.y, offsetopt.z);

            var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
            this.model.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
            //this.model.update();
        },

相关阅读

PHP 通过经纬度计算距离

传递参数:地址1的纬度:$lat1  ,经度:$lng1,地址2的纬度   $lat2  ,经度:$lng2,示例:封装的方法:/** * 计算两个经纬度距离 */

分享到:

栏目导航

推荐阅读

热门阅读