Convert.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. var SuperMap3DToSuperMap = {
  2. convertPoint : function(SuperMap3D,SuperMap,point){
  3. if(!SuperMap3D || !SuperMap || !point){
  4. return undefined;
  5. }
  6. var lonlatPoint = SuperMap3D.Cartographic.fromCartesian(point);
  7. var x = SuperMap3D.Math.toDegrees(lonlatPoint.longitude);
  8. var y = SuperMap3D.Math.toDegrees(lonlatPoint.latitude);
  9. if(x && y){
  10. return new SuperMap.Geometry.Point(x,y);
  11. }
  12. return undefined;
  13. },
  14. convertPolyline : function(SuperMap3D,SuperMap,polyline){
  15. if(!SuperMap3D || !SuperMap || !polyline){
  16. throw undefined;
  17. }
  18. var points = polyline.positions;
  19. if(points && points instanceof Array && points.length >= 2){
  20. var arr = [];
  21. for(var i = 0,j = points.length;i < j;i++){
  22. var point = this.convertPoint(SuperMap3D,SuperMap,points[i]);
  23. if(point){
  24. arr.push(point);
  25. }
  26. }
  27. return new SuperMap.Geometry.LineString(arr);
  28. }
  29. return undefined;
  30. },
  31. convertPolygon : function(SuperMap3D,SuperMap,polygon){
  32. if(!SuperMap3D || !SuperMap || !polygon){
  33. throw undefined;
  34. }
  35. var points = polygon.positions;
  36. if(points && points instanceof Array && points.length >= 3){
  37. var arr = [];
  38. for(var i = 0,j = points.length;i < j;i++){
  39. var point = this.convertPoint(SuperMap3D,SuperMap,points[i]);
  40. if(point){
  41. arr.push(point);
  42. }
  43. }
  44. var linearRing = new SuperMap.Geometry.LinearRing(arr);
  45. return new SuperMap.Geometry.Polygon(linearRing);
  46. }
  47. return undefined;
  48. }
  49. };
  50. var SuperMapToSuperMap3D = {
  51. geometryToEntity : function(SuperMap3D,SuperMap,geometry){
  52. var className = geometry.CLASS_NAME;
  53. if(className == 'SuperMap.Geometry.MultiPolygon'){
  54. return this.multipolygonToEntities(SuperMap3D,SuperMap,geometry);
  55. }
  56. else if(className == 'SuperMap.Geometry.Polygon'){
  57. return [this.polygonToEntity(SuperMap3D,SuperMap,geometry)];
  58. }
  59. return undefined;
  60. },
  61. polygonToEntity : function(SuperMap3D,SuperMap,geometry){
  62. var hierarchy = {};
  63. for(var i = 0,j = geometry.components.length;i < j;i++){
  64. if(i == 0){
  65. hierarchy.positions = this.GeometrytoDegreesArray(SuperMap3D,SuperMap,geometry.components[i]);
  66. }
  67. else{
  68. if(!hierarchy.holes){
  69. hierarchy.holes = [];
  70. }
  71. hierarchy.holes.push({
  72. positions : this.GeometrytoDegreesArray(SuperMap3D,SuperMap,geometry.components[i])
  73. });
  74. }
  75. }
  76. return new SuperMap3D.Entity({
  77. polygon : {
  78. hierarchy : hierarchy,
  79. material : SuperMap3D.Color.BLUE.withAlpha(0.5)
  80. },
  81. depthTestEnabled : false
  82. });
  83. },
  84. multipolygonToEntities : function(SuperMap3D,SuperMap,geometry){
  85. var components = geometry.components;
  86. var resultEntities = [];
  87. var entity;
  88. for(var item in components){
  89. entity = this.polygonToEntity(SuperMap3D,SuperMap,components[item]);
  90. resultEntities.push(entity);
  91. }
  92. return resultEntities;
  93. },
  94. GeometrytoDegreesArray : function(SuperMap3D,SuperMap,geometry){
  95. var vertices = geometry.getVertices();
  96. var degreesArr = [];
  97. for(var o in vertices){
  98. degreesArr.push(vertices[o].x,vertices[o].y);
  99. }
  100. return SuperMap3D.Cartesian3.fromDegreesArray(degreesArr);
  101. }
  102. };