02_datasourceService.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_DatasourceInfo"></title>
  9. <script type="text/javascript" src="../../dist/ol/include-ol.js"></script>
  10. <style>
  11. body {
  12. margin: 0;
  13. overflow: hidden;
  14. background: #fff;
  15. width: 100%;
  16. height: 100%
  17. }
  18. #map {
  19. position: absolute;
  20. width: 100%;
  21. height: 100%;
  22. }
  23. #toolbar {
  24. position: absolute;
  25. top: 50px;
  26. right: 10px;
  27. width: 300px;
  28. text-align: center;
  29. z-index: 100;
  30. border-radius: 4px;
  31. }
  32. .ol-popup {
  33. position: absolute;
  34. background-color: white;
  35. -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
  36. filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
  37. padding: 15px;
  38. border-radius: 10px;
  39. border: 1px solid #cccccc;
  40. bottom: 12px;
  41. left: -50px;
  42. min-width: 280px;
  43. }
  44. .ol-popup:after,
  45. .ol-popup:before {
  46. top: 100%;
  47. border: solid transparent;
  48. content: " ";
  49. height: 0;
  50. width: 0;
  51. position: absolute;
  52. pointer-events: none;
  53. }
  54. .ol-popup:after {
  55. border-top-color: white;
  56. border-width: 10px;
  57. left: 48px;
  58. margin-left: -10px;
  59. }
  60. .ol-popup:before {
  61. border-top-color: #cccccc;
  62. border-width: 11px;
  63. left: 48px;
  64. margin-left: -11px;
  65. }
  66. .ol-popup-closer {
  67. text-decoration: none;
  68. position: absolute;
  69. top: 2px;
  70. right: 8px;
  71. }
  72. .ol-popup-closer:after {
  73. content: "✖";
  74. }
  75. </style>
  76. </head>
  77. <body>
  78. <div id="toolbar" class="panel panel-primary">
  79. <div class='panel-heading'>
  80. <h5 class='panel-title text-center' data-i18n="resources.title_DatasourceInfo"></h5>
  81. </div>
  82. <div class='panel-body content'>
  83. <div class='panel'>
  84. <div class='input-group'>
  85. <span class='input-group-addon' data-i18n="resources.text_Datasources"></span>
  86. <select id='datasourcesSelect' class='form-control'></select>
  87. </div>
  88. </div>
  89. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_query"
  90. onclick="datasourcesPrint()" />
  91. </div>
  92. </div>
  93. <div id="map"></div>
  94. <div id="popup" class="ol-popup">
  95. <a href="#" id="popup-closer" class="ol-popup-closer"></a>
  96. <div id="popup-content"></div>
  97. </div>
  98. <script type="text/javascript" include="bootstrap-css" src="../js/include-web.js"></script>
  99. <script type="text/javascript">
  100. let map,
  101. datasourcesSelect,
  102. baseUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/map-world/rest/maps/World",
  103. url = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/data-world/rest/data";
  104. let container = document.getElementById('popup');
  105. let content = document.getElementById('popup-content');
  106. let closer = document.getElementById('popup-closer');
  107. let overlay = new ol.Overlay(({
  108. element: container,
  109. autoPan: true,
  110. autoPanAnimation: {
  111. duration: 250
  112. }
  113. }));
  114. map = new ol.Map({
  115. target: 'map',
  116. controls: ol.control.defaults({ attributionOptions: { collapsed: false } })
  117. .extend([new ol.supermap.control.Logo()]),
  118. view: new ol.View({
  119. center: [0, 0],
  120. zoom: 3,
  121. projection: 'EPSG:4326',
  122. multiWorld: true
  123. }),
  124. overlays: [overlay]
  125. });
  126. let layer = new ol.layer.Tile({
  127. source: new ol.source.TileSuperMapRest({
  128. url: baseUrl,
  129. }),
  130. projection: 'EPSG:4326'
  131. });
  132. map.addLayer(layer);
  133. dataSourcesService();
  134. function dataSourcesService() {
  135. new ol.supermap.DatasourceService(url).getDatasources(function (serviceResult) {
  136. datasourcesSelect = document.getElementById("datasourcesSelect");
  137. const datasourceNames = serviceResult.result.datasourceNames;
  138. for (let i = 0, len = serviceResult.result.datasourceNames.length; i < len; i++) {
  139. datasourcesSelect.options[i] = new Option(datasourceNames[i], datasourceNames[i]);
  140. }
  141. });
  142. }
  143. //打印数据源信息
  144. function datasourcesPrint() {
  145. const datasourceName = datasourcesSelect.value;
  146. new ol.supermap.DatasourceService(url).getDatasource(datasourceName, function (serviceResult) {
  147. let innerHTML = "(" + resources.text_datasourceInfoPrint + ")" + "<br><br>";
  148. innerHTML += "coordUnit:" + JSON.stringify(serviceResult.result.datasourceInfo.coordUnit, null, 2) + "<br>";
  149. innerHTML += "description:" + JSON.stringify(serviceResult.result.datasourceInfo.description, null, 2) + "<br>";
  150. innerHTML += "distanceUnit:" + JSON.stringify(serviceResult.result.datasourceInfo.distanceUnit, null, 2) + "<br>";
  151. innerHTML += "engineType:" + JSON.stringify(serviceResult.result.datasourceInfo.engineType, null, 2) + "<br>";
  152. innerHTML += "name:" + JSON.stringify(serviceResult.result.datasourceInfo.name, null, 2) + "<br>";
  153. innerHTML += "prjCoordSys:" + "(...)" + "<br>";
  154. content.innerHTML = innerHTML;
  155. overlay.setPosition([0, 0])
  156. });
  157. }
  158. //关闭弹窗
  159. closer.onclick = function () {
  160. overlay.setPosition(undefined);
  161. closer.blur();
  162. return false
  163. };
  164. </script>
  165. </body>
  166. </html>