overlay_telecomIconData.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  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_telecomIconData"></title>
  9. <style type="text/css">
  10. body {
  11. margin: 0;
  12. overflow: hidden;
  13. background: #fff;
  14. width: 100%;
  15. height: 100%
  16. }
  17. #map {
  18. position: absolute;
  19. width: 100%;
  20. height: 100%;
  21. }
  22. #toolbar {
  23. position: absolute;
  24. top: 50px;
  25. right: 10px;
  26. text-align: center;
  27. z-index: 100;
  28. border-radius: 4px;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <div id="toolbar" class="panel panel-primary">
  34. <div class='panel-heading'>
  35. <h5 class='panel-title text-center' data-i18n="resources.title_telecomIconData"></h5></div>
  36. <div class='panel-body content'>
  37. <input type="button" class="btn btn-default" data-i18n="[value]resources.btn_createIcon"
  38. onclick="createMarker()"/>&nbsp;
  39. <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_clear"
  40. onclick="clearAllFeatures()"/>
  41. </div>
  42. </div>
  43. <div id="map"></div>
  44. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  45. <script type="text/javascript" exclude="iclient-classic" exclude="iclient-classic"
  46. src="../../dist/classic/include-classic.js"></script>
  47. <script>
  48. var featuresOrigin = [];
  49. var map, local, layer, vector, select;
  50. var style = {
  51. strokeColor: "#304DBE",
  52. strokeWidth: 2,
  53. pointerEvents: "visiblePainted",
  54. fillColor: "#304DBE",
  55. fillOpacity: 0.8
  56. };
  57. var style_green = {
  58. strokeColor: "#FFF",
  59. strokeOpacity: 1,
  60. strokeWidth: 2,
  61. pointRadius: 6,
  62. pointerEvents: "visiblePainted",
  63. fillColor: '#545BF4'
  64. };
  65. var style_green1 = {
  66. strokeColor: "#FFF",
  67. strokeOpacity: 1,
  68. strokeWidth: 2,
  69. pointRadius: 6,
  70. pointerEvents: "visiblePainted",
  71. fillColor: '#50E7F8'
  72. };
  73. var style_green2 = {
  74. strokeColor: "#FFF",
  75. strokeOpacity: 1,
  76. strokeWidth: 2,
  77. pointRadius: 6,
  78. pointerEvents: "visiblePainted",
  79. fillColor: '#0C9CFE'
  80. };
  81. var host = window.isLocal ? window.server : "https://iserver.supermap.io",
  82. url = host + "/iserver/services/map-china400/rest/maps/China";
  83. init();
  84. function init() {
  85. //定义layer图层,TiledDynamicRESTLayer:分块动态 REST 图层
  86. layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, {
  87. transparent: true,
  88. cacheEnabled: true
  89. }, {maxResolution: "auto", useCanvas: false});
  90. //为图层初始化完毕添加addLayer()事件
  91. layer.events.on({"layerInitialized": addLayer});
  92. map = new SuperMap.Map("map", {
  93. controls: [
  94. new SuperMap.Control.OverviewMap(),
  95. new SuperMap.Control.ScaleLine(),
  96. new SuperMap.Control.Zoom(),
  97. new SuperMap.Control.Navigation({
  98. dragPanOptions: {
  99. enableKinetic: true
  100. }
  101. })
  102. ]
  103. });
  104. map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
  105. vector = new SuperMap.Layer.Vector("Vector Layer");
  106. }
  107. function addLayer() {
  108. map.addLayers([layer, vector]);
  109. select = new SuperMap.Control.SelectFeature(vector, {
  110. onSelect: onFeatureSelect,
  111. onUnselect: onFeatureUnselect
  112. });
  113. map.addControl(select);
  114. map.setCenter(new SuperMap.LonLat(11733502.481499, 4614406.969325), 5);
  115. }
  116. //移除整个图层要素
  117. function clearAllFeatures() {
  118. vector.removeAllFeatures();
  119. if (map.popups.length != 0) {
  120. var i = 0, lengthPopup = map.popups.length;
  121. while (i < lengthPopup) {
  122. map.removePopup(map.popups[0]);
  123. i++;
  124. }
  125. }
  126. map.events.un({"zoomend": featureEvent});
  127. }
  128. //添加标注
  129. function createMarker() {
  130. vector.removeAllFeatures();
  131. var resolution = map.getResolutionForZoom(map.zoom);
  132. var curve1 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  133. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  134. 21.7 * 2,
  135. 20,
  136. 20,
  137. 90 - 10,
  138. resolution
  139. );
  140. var sector1 = new SuperMap.Feature.Vector(
  141. curve1,
  142. {},
  143. style_green2
  144. );
  145. var curve12 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  146. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  147. 21.7 * 2,
  148. 20,
  149. 20,
  150. 210 - 10,
  151. resolution
  152. );
  153. var sector12 = new SuperMap.Feature.Vector(
  154. curve12,
  155. {},
  156. style_green2
  157. );
  158. var curve13 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  159. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  160. 21.7 * 2,
  161. 20,
  162. 20,
  163. 330 - 10,
  164. resolution
  165. );
  166. var sector13 = new SuperMap.Feature.Vector(
  167. curve13,
  168. {},
  169. style_green2
  170. );
  171. var curve2 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  172. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  173. 18.3 * 2,
  174. 20,
  175. 30,
  176. 90 - 15,
  177. resolution
  178. );
  179. var sector2 = new SuperMap.Feature.Vector(
  180. curve2,
  181. {},
  182. style_green
  183. );
  184. var curve22 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  185. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  186. 18.3 * 2,
  187. 20,
  188. 30,
  189. 210 - 15,
  190. resolution
  191. );
  192. var sector22 = new SuperMap.Feature.Vector(
  193. curve22,
  194. {},
  195. style_green
  196. );
  197. var curve23 = SuperMap.Geometry.Polygon.createRegularPolygonCurve(
  198. new SuperMap.Geometry.Point(12085722.7315, 3942864.5449),
  199. 18.3 * 2,
  200. 20,
  201. 30,
  202. 330 - 15,
  203. resolution
  204. );
  205. var sector23 = new SuperMap.Feature.Vector(
  206. curve23,
  207. {},
  208. style_green
  209. );
  210. var origin = new SuperMap.Geometry.Point(11983722.7315, 3942864.5449);
  211. var height = 13.8 * 2;
  212. var width = 3.6 * 2;
  213. var geo1 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 90, resolution);
  214. var vector1 = new SuperMap.Feature.Vector(
  215. geo1,
  216. {},
  217. style_green1
  218. );
  219. var geo12 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 210, resolution);
  220. var vector12 = new SuperMap.Feature.Vector(
  221. geo12,
  222. {},
  223. style_green1
  224. );
  225. var geo13 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 330, resolution);
  226. var vector13 = new SuperMap.Feature.Vector(
  227. geo13,
  228. {},
  229. style_green1
  230. );
  231. var height = 11.2 * 2;
  232. var width = 4.2 * 2;
  233. var geo2 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 90, resolution);
  234. var vector2 = new SuperMap.Feature.Vector(
  235. geo2,
  236. {},
  237. style_green2
  238. );
  239. var geo22 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 210, resolution);
  240. var vector22 = new SuperMap.Feature.Vector(
  241. geo22,
  242. {},
  243. style_green2
  244. );
  245. var geo23 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 330, resolution);
  246. var vector23 = new SuperMap.Feature.Vector(
  247. geo23,
  248. {},
  249. style_green2
  250. );
  251. var height = 8.8 * 2;
  252. var width = 5.0 * 2;
  253. var geo3 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 90, resolution);
  254. var vector3 = new SuperMap.Feature.Vector(
  255. geo3,
  256. {},
  257. style_green
  258. );
  259. var geo32 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 210, resolution);
  260. var vector32 = new SuperMap.Feature.Vector(
  261. geo32,
  262. {},
  263. style_green
  264. );
  265. var geo33 = SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, 330, resolution);
  266. var vector33 = new SuperMap.Feature.Vector(
  267. geo33,
  268. {},
  269. style_green
  270. );
  271. origin = new SuperMap.Geometry.Point(11883722.7315, 3942864.5449);
  272. var geoTriangle = SuperMap.Geometry.Polygon.createRegularPolygonTriangle(origin, height * 2, width * 2, 12, 90, resolution);
  273. var vectorTriangle = new SuperMap.Feature.Vector(
  274. geoTriangle,
  275. {},
  276. style
  277. );
  278. vector.addFeatures([
  279. vector1, vector2, vector3,
  280. vector12, vector22, vector32,
  281. vector13, vector23, vector33,
  282. sector1, sector2,
  283. sector12, sector22,
  284. sector13, sector23,
  285. vectorTriangle
  286. ]);
  287. featuresOrigin = featuresOrigin.concat(vector1, vector2, vector3,
  288. vector12, vector22, vector32,
  289. vector13, vector23, vector33,
  290. sector1, sector2,
  291. sector12, sector22,
  292. sector13, sector23,
  293. vectorTriangle);
  294. select.activate();
  295. // 固定大小下触发此事件,按照设置的像素,和当前的分辨率,重新构造Geometry,从而达到固定大小的效果
  296. map.events.on({
  297. "zoomend": featureEvent
  298. });
  299. }
  300. function featureEvent(event) {
  301. var solution = map.getResolutionForZoom(map.zoom);
  302. var features = [];
  303. var length = featuresOrigin.length;
  304. for (var i = 0; i < length; i++) {
  305. var geo = featuresOrigin[i].geometry;
  306. var vector1 = new SuperMap.Feature.Vector(
  307. geoFixed(geo, solution),
  308. {},
  309. featuresOrigin[i].style
  310. );
  311. features.push(vector1);
  312. }
  313. vector.removeAllFeatures();
  314. vector.addFeatures(features);
  315. }
  316. function geoFixed(geo, resolution) {
  317. if (geo != null && geo.polygonType != undefined) {
  318. if (geo.polygonType == "Curve") {
  319. var origin = geo.origin;
  320. var radius = geo.radius;
  321. var sides = geo.sides;
  322. var r = geo.r;
  323. var angel = geo.angel;
  324. return SuperMap.Geometry.Polygon.createRegularPolygonCurve(origin, radius, sides, r, angel, resolution);
  325. } else if (geo.polygonType == "Triangle") {
  326. var origin = geo.origin;
  327. var height = geo.height;
  328. var width = geo.width;
  329. var lineLength = geo.lineLength;
  330. var angel = geo.angel;
  331. return SuperMap.Geometry.Polygon.createRegularPolygonTriangle(origin, height, width, lineLength, angel, resolution);
  332. } else if (geo.polygonType == "Bspline") {
  333. var origin = geo.origin;
  334. var height = geo.height;
  335. var width = geo.width;
  336. var lineLength = geo.lineLength;
  337. var angel = geo.angel;
  338. return SuperMap.Geometry.Polygon.createBsplinesurface(origin, height, width, angel, resolution);
  339. }
  340. }
  341. }
  342. //要素被选中时调用此函数
  343. function onFeatureSelect(feature) {
  344. {
  345. selectedFeature = feature;
  346. var i = SuperMap.Util.indexOf(vector.features, feature);
  347. var j = ++i;
  348. contentHTML = "<div style='font-size:.8em; opacity: 0.8; overflow-y:hidden;'>" +
  349. "<span style='font-weight: bold; font-size: 18px;'>" + resources.text_equipment + "</span>" + j + "<br>";
  350. contentHTML += "</div>";
  351. //初始化一个弹出窗口,当某个地图要素被选中时会弹出此窗口,用来显示选中地图要素的属性信息
  352. popup = new SuperMap.Popup.FramedCloud("chicken",
  353. feature.geometry.getBounds().getCenterLonLat(),
  354. null,
  355. contentHTML,
  356. null,
  357. true);
  358. popup.closeOnMove = true;
  359. feature.popup = popup;
  360. map.addPopup(popup);
  361. }
  362. }
  363. //清除要素时调用此函数
  364. function onFeatureUnselect(feature) {
  365. map.removePopup(feature.popup);
  366. feature.popup.destroy();
  367. feature.popup = null;
  368. }
  369. </script>
  370. </body>
  371. </html>