当前位置:   article > 正文

Cesium笔记 获取实体位置并转化为经纬度坐标_cesium 获取 实体位置

cesium 获取 实体位置
  1. /**
  2. * 获取实体的位置 并转换成string
  3. * @param {\} entity 多边形 矩形 点 圆形 多段线
  4. * @returns
  5. */
  6. getPositionsByEnity(entity) {
  7. if (entity) {
  8. if (entity.polygon) {
  9. return JSON.stringify(
  10. this.getLngLatByCartesian3(
  11. entity.polygon.hierarchy.getValue().positions
  12. )
  13. );
  14. } else if (entity.rectangle) {
  15. let rectangle = entity.rectangle.coordinates.getValue();
  16. let result = [];
  17. Cesium.Rectangle.subsample(
  18. rectangle,
  19. Cesium.Ellipsoid.WGS84,
  20. rectangle.height,
  21. result
  22. );
  23. return JSON.stringify(this.getLngLatByCartesian3(result));
  24. } else if (entity.point) {
  25. return JSON.stringify(
  26. this.getLngLatByCartesian3(entity.position._value)
  27. );
  28. } else if (entity.ellipse) {
  29. let res = {
  30. center: this.getLngLatByCartesian3(entity.position._value),
  31. radius: entity.ellipse.semiMajorAxis.getValue(),
  32. };
  33. return JSON.stringify(res);
  34. } else if (entity.polyline) {
  35. return this.getLngLatByCartesian3(entity.polyline.positions.getValue(), 'polyline')
  36. }
  37. }
  38. return undefined;
  39. },
  40. /**
  41. * 笛卡尔坐标转换经纬度坐标
  42. * @param {*} car3_ps
  43. * @returns
  44. */
  45. getLngLatByCartesian3(car3_ps, type) {
  46. let result = null;
  47. if (car3_ps instanceof Cesium.Cartesian3) {
  48. let _cartographic = Cesium.Cartographic.fromCartesian(car3_ps);
  49. let _lat = Cesium.Math.toDegrees(_cartographic.latitude);
  50. let _lng = Cesium.Math.toDegrees(_cartographic.longitude);
  51. let _alt = _cartographic.height;
  52. if (type == 'polyline') {
  53. result = { longitude: _lng, latitude: _lat, elevation: _alt }
  54. } else {
  55. result = { lng: _lng, lat: _lat, alt: _alt }
  56. }
  57. return result;
  58. } else if (car3_ps instanceof Array) {
  59. let res = [];
  60. for (let i = 0; i < car3_ps.length; i++) {
  61. let _cartographic = Cesium.Cartographic.fromCartesian(car3_ps[i]);
  62. let _lat = Cesium.Math.toDegrees(_cartographic.latitude);
  63. let _lng = Cesium.Math.toDegrees(_cartographic.longitude);
  64. let _alt = _cartographic.height;
  65. if (type == 'polyline') {
  66. res.push({ longitude: _lng, latitude: _lat, elevation: _alt })
  67. } else {
  68. res.push({ lng: _lng, lat: _lat, alt: _alt })
  69. }
  70. }
  71. return res;
  72. }
  73. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/564055
推荐阅读
相关标签
  

闽ICP备14008679号