@supermapgis/vue-iclient-leaflet 11.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +31 -0
  3. package/dist/iclient-leaflet-vue.css +24471 -0
  4. package/dist/iclient-leaflet-vue.js +190317 -0
  5. package/dist/iclient-leaflet-vue.min.css +9 -0
  6. package/dist/iclient-leaflet-vue.min.js +517 -0
  7. package/dist/index.js +15 -0
  8. package/lib/_assets/iconfont/icon-sm-components.css +245 -0
  9. package/lib/_assets/iconfont/icon-sm-components.eot +0 -0
  10. package/lib/_assets/iconfont/icon-sm-components.svg +197 -0
  11. package/lib/_assets/iconfont/icon-sm-components.ttf +0 -0
  12. package/lib/_assets/iconfont/icon-sm-components.woff +0 -0
  13. package/lib/_assets/iconfont/icon-sm-components.woff2 +0 -0
  14. package/lib/_lang/en.js +446 -0
  15. package/lib/_lang/index.js +385 -0
  16. package/lib/_lang/zh.js +445 -0
  17. package/lib/_mixin/AntdRender.js +686 -0
  18. package/lib/_mixin/Card.js +197 -0
  19. package/lib/_mixin/GridLayer.js +153 -0
  20. package/lib/_mixin/Layer.js +140 -0
  21. package/lib/_mixin/Options.js +114 -0
  22. package/lib/_mixin/Popper.js +134 -0
  23. package/lib/_mixin/Theme.js +441 -0
  24. package/lib/_mixin/ThirdService.js +243 -0
  25. package/lib/_mixin/TileLayer.js +138 -0
  26. package/lib/_mixin/Timer.js +230 -0
  27. package/lib/_mixin/VmUpdater.js +204 -0
  28. package/lib/_mixin/WebMapBase.js +3467 -0
  29. package/lib/_mixin/map-events.js +200 -0
  30. package/lib/_mixin/map-getter.js +341 -0
  31. package/lib/_types/AddressMatchParameter.js +118 -0
  32. package/lib/_types/GeoJSONParamter.js +113 -0
  33. package/lib/_types/RestDataParameter.js +141 -0
  34. package/lib/_types/RestMapParameter.js +141 -0
  35. package/lib/_types/RestParameter.js +121 -0
  36. package/lib/_types/event/BaseTypes.js +124 -0
  37. package/lib/_types/event/Event.js +442 -0
  38. package/lib/_types/event/Events.js +484 -0
  39. package/lib/_types/event/Pixel.js +295 -0
  40. package/lib/_types/event/Util.js +305 -0
  41. package/lib/_types/iPortalDataParameter.js +121 -0
  42. package/lib/_types/iServerBaseParameter.js +111 -0
  43. package/lib/_types/iServerDataParameter.js +154 -0
  44. package/lib/_types/iServerMapParameter.js +154 -0
  45. package/lib/_types/index.js +231 -0
  46. package/lib/_types/map-event.js +163 -0
  47. package/lib/_utils/EchartsDataService.js +843 -0
  48. package/lib/_utils/RestService.js +7096 -0
  49. package/lib/_utils/WebMapService.js +1607 -0
  50. package/lib/_utils/epsg-define.js +181 -0
  51. package/lib/_utils/get-features.js +232 -0
  52. package/lib/_utils/global-event.js +134 -0
  53. package/lib/_utils/iPortalDataService.js +7459 -0
  54. package/lib/_utils/iServerRestService.js +7603 -0
  55. package/lib/_utils/props-binder.js +129 -0
  56. package/lib/_utils/statistics.js +147 -0
  57. package/lib/_utils/style/color/colorPalette.js +192 -0
  58. package/lib/_utils/style/color/serialColors.js +352 -0
  59. package/lib/_utils/style/common/common.css +1 -0
  60. package/lib/_utils/style/mixins/config.css +0 -0
  61. package/lib/_utils/style/mixins/mixins.css +0 -0
  62. package/lib/_utils/style/theme/antd.css +25242 -0
  63. package/lib/_utils/style/theme/antdVar.css +0 -0
  64. package/lib/_utils/style/theme/chart.js +7477 -0
  65. package/lib/_utils/style/theme/set-theme.js +200 -0
  66. package/lib/_utils/style/theme/theme.css +0 -0
  67. package/lib/_utils/style/theme/theme.json +356 -0
  68. package/lib/_utils/util.js +484 -0
  69. package/lib/_utils/vue-types/index.js +396 -0
  70. package/lib/_utils/vue-types/utils.js +318 -0
  71. package/lib/avatar/index.js +656 -0
  72. package/lib/avatar/style/avatar.css +1 -0
  73. package/lib/avatar/style/css.js +9 -0
  74. package/lib/avatar/style/index.css +2135 -0
  75. package/lib/avatar/style/index.js +9 -0
  76. package/lib/border/index.js +642 -0
  77. package/lib/border/style/border.css +1 -0
  78. package/lib/border/style/css.js +7 -0
  79. package/lib/border/style/index.js +7 -0
  80. package/lib/breadcrumb/index.js +813 -0
  81. package/lib/breadcrumb/style/breadcrumb.css +1 -0
  82. package/lib/breadcrumb/style/css.js +9 -0
  83. package/lib/breadcrumb/style/index.css +2102 -0
  84. package/lib/breadcrumb/style/index.js +9 -0
  85. package/lib/button/index.js +758 -0
  86. package/lib/button/style/button.css +1 -0
  87. package/lib/button/style/css.js +9 -0
  88. package/lib/button/style/index.css +3571 -0
  89. package/lib/button/style/index.js +9 -0
  90. package/lib/card/index.js +824 -0
  91. package/lib/card/style/card.css +1 -0
  92. package/lib/card/style/css.js +9 -0
  93. package/lib/card/style/index.css +2379 -0
  94. package/lib/card/style/index.js +9 -0
  95. package/lib/chart/index.js +9471 -0
  96. package/lib/chart/style/chart.css +1 -0
  97. package/lib/chart/style/css.js +11 -0
  98. package/lib/chart/style/index.js +11 -0
  99. package/lib/checkbox/index.js +756 -0
  100. package/lib/checkbox/style/checkbox.css +1 -0
  101. package/lib/checkbox/style/css.js +9 -0
  102. package/lib/checkbox/style/index.css +2286 -0
  103. package/lib/checkbox/style/index.js +9 -0
  104. package/lib/collapse/index.js +446 -0
  105. package/lib/collapse/style/collapse.css +1 -0
  106. package/lib/collapse/style/css.js +9 -0
  107. package/lib/collapse/style/index.css +2187 -0
  108. package/lib/collapse/style/index.js +9 -0
  109. package/lib/collapse-card/index.js +588 -0
  110. package/lib/collapse-card/style/collapse-card.css +1 -0
  111. package/lib/collapse-card/style/css.js +7 -0
  112. package/lib/collapse-card/style/index.js +7 -0
  113. package/lib/color-picker/index.js +521 -0
  114. package/lib/color-picker/style/color-picker.css +1 -0
  115. package/lib/color-picker/style/css.js +7 -0
  116. package/lib/color-picker/style/index.js +7 -0
  117. package/lib/date-picker/index.js +680 -0
  118. package/lib/date-picker/style/css.js +9 -0
  119. package/lib/date-picker/style/date-picker.css +1 -0
  120. package/lib/date-picker/style/index.css +4236 -0
  121. package/lib/date-picker/style/index.js +9 -0
  122. package/lib/dropdown/index.js +347 -0
  123. package/lib/dropdown/style/css.js +9 -0
  124. package/lib/dropdown/style/dropdown.css +1 -0
  125. package/lib/dropdown/style/index.css +2344 -0
  126. package/lib/dropdown/style/index.js +9 -0
  127. package/lib/empty/index.js +643 -0
  128. package/lib/empty/style/css.js +9 -0
  129. package/lib/empty/style/empty.css +1 -0
  130. package/lib/empty/style/index.css +2095 -0
  131. package/lib/empty/style/index.js +9 -0
  132. package/lib/icon/index.js +681 -0
  133. package/lib/icon/style/css.js +9 -0
  134. package/lib/icon/style/icon.css +1 -0
  135. package/lib/icon/style/index.css +2058 -0
  136. package/lib/icon/style/index.js +9 -0
  137. package/lib/identify/index.js +1081 -0
  138. package/lib/identify/style/css.js +9 -0
  139. package/lib/identify/style/identify.css +1 -0
  140. package/lib/identify/style/index.js +9 -0
  141. package/lib/iframe/index.js +344 -0
  142. package/lib/iframe/style/css.js +7 -0
  143. package/lib/iframe/style/iframe.css +1 -0
  144. package/lib/iframe/style/index.js +7 -0
  145. package/lib/image/index.js +446 -0
  146. package/lib/image/style/css.js +7 -0
  147. package/lib/image/style/image.css +1 -0
  148. package/lib/image/style/index.js +7 -0
  149. package/lib/index.js +1040 -0
  150. package/lib/indicator/index.js +996 -0
  151. package/lib/indicator/style/countTo.css +1 -0
  152. package/lib/indicator/style/css.js +7 -0
  153. package/lib/indicator/style/index.js +7 -0
  154. package/lib/indicator/style/indicator.css +1 -0
  155. package/lib/init.js +207 -0
  156. package/lib/input/index.js +1151 -0
  157. package/lib/input/style/css.js +9 -0
  158. package/lib/input/style/index.css +2549 -0
  159. package/lib/input/style/index.js +9 -0
  160. package/lib/input/style/input.css +1 -0
  161. package/lib/input-number/index.js +739 -0
  162. package/lib/input-number/style/css.js +9 -0
  163. package/lib/input-number/style/index.css +2360 -0
  164. package/lib/input-number/style/index.js +9 -0
  165. package/lib/input-number/style/input-number.css +1 -0
  166. package/lib/layout/index.js +700 -0
  167. package/lib/layout/style/css.js +9 -0
  168. package/lib/layout/style/index.css +2185 -0
  169. package/lib/layout/style/index.js +9 -0
  170. package/lib/layout/style/layout.css +0 -0
  171. package/lib/liquid-fill/index.js +983 -0
  172. package/lib/liquid-fill/style/css.js +7 -0
  173. package/lib/liquid-fill/style/index.js +7 -0
  174. package/lib/liquid-fill/style/liquid-fill.css +1 -0
  175. package/lib/marker/index.js +649 -0
  176. package/lib/marker/style/css.js +0 -0
  177. package/lib/marker/style/index.js +0 -0
  178. package/lib/menu/index.js +858 -0
  179. package/lib/menu/style/css.js +9 -0
  180. package/lib/menu/style/index.css +2777 -0
  181. package/lib/menu/style/index.js +9 -0
  182. package/lib/menu/style/menu.css +0 -0
  183. package/lib/message/index.js +174 -0
  184. package/lib/message/style/css.js +9 -0
  185. package/lib/message/style/index.css +2143 -0
  186. package/lib/message/style/index.js +9 -0
  187. package/lib/message/style/message.css +1 -0
  188. package/lib/modal/index.js +742 -0
  189. package/lib/modal/style/css.js +9 -0
  190. package/lib/modal/style/index.css +2289 -0
  191. package/lib/modal/style/index.js +9 -0
  192. package/lib/modal/style/modal.css +1 -0
  193. package/lib/nav/style/css.js +9 -0
  194. package/lib/nav/style/index.js +9 -0
  195. package/lib/nav/style/nav.css +1 -0
  196. package/lib/notification/index.js +151 -0
  197. package/lib/notification/style/css.js +9 -0
  198. package/lib/notification/style/index.css +2285 -0
  199. package/lib/notification/style/index.js +9 -0
  200. package/lib/notification/style/notification.css +1 -0
  201. package/lib/pagination/index.js +352 -0
  202. package/lib/pagination/style/css.js +9 -0
  203. package/lib/pagination/style/index.css +2529 -0
  204. package/lib/pagination/style/index.js +9 -0
  205. package/lib/pagination/style/pagination.css +1 -0
  206. package/lib/popup/index.js +800 -0
  207. package/lib/popup/style/css.js +0 -0
  208. package/lib/popup/style/index.js +0 -0
  209. package/lib/progress/index.js +1146 -0
  210. package/lib/progress/style/css.js +9 -0
  211. package/lib/progress/style/index.css +2226 -0
  212. package/lib/progress/style/index.js +9 -0
  213. package/lib/progress/style/progress.css +1 -0
  214. package/lib/radio/index.js +852 -0
  215. package/lib/radio/style/css.js +9 -0
  216. package/lib/radio/style/index.css +2381 -0
  217. package/lib/radio/style/index.js +9 -0
  218. package/lib/radio/style/radio.css +1 -0
  219. package/lib/select/index.js +836 -0
  220. package/lib/select/style/css.js +9 -0
  221. package/lib/select/style/index.css +2655 -0
  222. package/lib/select/style/index.js +9 -0
  223. package/lib/select/style/select.css +1 -0
  224. package/lib/slider/index.js +347 -0
  225. package/lib/slider/style/css.js +9 -0
  226. package/lib/slider/style/index.css +2233 -0
  227. package/lib/slider/style/index.js +9 -0
  228. package/lib/slider/style/slider.css +1 -0
  229. package/lib/slideshow/index.js +913 -0
  230. package/lib/slideshow/style/css.js +9 -0
  231. package/lib/slideshow/style/index.js +9 -0
  232. package/lib/slideshow/style/slideshow.css +1 -0
  233. package/lib/spin/index.js +357 -0
  234. package/lib/spin/style/css.js +9 -0
  235. package/lib/spin/style/index.css +2268 -0
  236. package/lib/spin/style/index.js +9 -0
  237. package/lib/spin/style/spin.css +1 -0
  238. package/lib/steps/index.js +748 -0
  239. package/lib/steps/style/css.js +9 -0
  240. package/lib/steps/style/index.css +2724 -0
  241. package/lib/steps/style/index.js +9 -0
  242. package/lib/steps/style/steps.css +1 -0
  243. package/lib/style.js +7 -0
  244. package/lib/switch/index.js +654 -0
  245. package/lib/switch/style/css.js +9 -0
  246. package/lib/switch/style/index.css +2241 -0
  247. package/lib/switch/style/index.js +9 -0
  248. package/lib/switch/style/switch.css +1 -0
  249. package/lib/table/index.js +810 -0
  250. package/lib/table/style/css.js +9 -0
  251. package/lib/table/style/index.css +2909 -0
  252. package/lib/table/style/index.js +9 -0
  253. package/lib/table/style/table.css +1 -0
  254. package/lib/table-popup/index.js +438 -0
  255. package/lib/table-popup/style/css.js +9 -0
  256. package/lib/table-popup/style/index.js +9 -0
  257. package/lib/table-popup/style/table-popup.css +1 -0
  258. package/lib/tabs/index.js +743 -0
  259. package/lib/tabs/style/css.js +9 -0
  260. package/lib/tabs/style/index.css +2692 -0
  261. package/lib/tabs/style/index.js +9 -0
  262. package/lib/tabs/style/tabs.css +1 -0
  263. package/lib/text/index.js +434 -0
  264. package/lib/text/style/css.js +7 -0
  265. package/lib/text/style/index.js +7 -0
  266. package/lib/text/style/text.css +1 -0
  267. package/lib/tile-layer/index.js +535 -0
  268. package/lib/tile-layer/style/css.js +0 -0
  269. package/lib/tile-layer/style/index.js +0 -0
  270. package/lib/time-line/index.js +654 -0
  271. package/lib/time-line/style/css.js +7 -0
  272. package/lib/time-line/style/index.js +7 -0
  273. package/lib/time-line/style/time-line.css +1 -0
  274. package/lib/time-picker/index.js +669 -0
  275. package/lib/time-picker/style/css.js +9 -0
  276. package/lib/time-picker/style/index.css +2418 -0
  277. package/lib/time-picker/style/index.js +9 -0
  278. package/lib/time-picker/style/time-picker.css +1 -0
  279. package/lib/time-range/index.js +526 -0
  280. package/lib/time-range/style/css.js +7 -0
  281. package/lib/time-range/style/index.js +7 -0
  282. package/lib/time-range/style/time-range.css +1 -0
  283. package/lib/time-slider/index.js +1169 -0
  284. package/lib/time-slider/style/css.js +7 -0
  285. package/lib/time-slider/style/index.js +7 -0
  286. package/lib/time-slider/style/time-slider.css +1 -0
  287. package/lib/time-text/index.js +393 -0
  288. package/lib/time-text/style/css.js +7 -0
  289. package/lib/time-text/style/index.js +7 -0
  290. package/lib/time-text/style/time-text.css +1 -0
  291. package/lib/tooltip/index.js +635 -0
  292. package/lib/tooltip/style/css.js +9 -0
  293. package/lib/tooltip/style/index.css +2231 -0
  294. package/lib/tooltip/style/index.js +9 -0
  295. package/lib/tooltip/style/tooltip.css +0 -0
  296. package/lib/transfer/index.js +636 -0
  297. package/lib/transfer/style/css.js +9 -0
  298. package/lib/transfer/style/index.css +2302 -0
  299. package/lib/transfer/style/index.js +9 -0
  300. package/lib/transfer/style/transfer.css +1 -0
  301. package/lib/tree/index.js +857 -0
  302. package/lib/tree/style/css.js +9 -0
  303. package/lib/tree/style/index.css +2644 -0
  304. package/lib/tree/style/index.js +9 -0
  305. package/lib/tree/style/tree.css +1 -0
  306. package/lib/tree-select/index.js +765 -0
  307. package/lib/tree-select/style/css.js +9 -0
  308. package/lib/tree-select/style/index.css +2508 -0
  309. package/lib/tree-select/style/index.js +9 -0
  310. package/lib/tree-select/style/tree-select.css +1 -0
  311. package/lib/video-player/index.js +1472 -0
  312. package/lib/video-player/style/css.js +11 -0
  313. package/lib/video-player/style/index.js +11 -0
  314. package/lib/video-player/style/video-player.css +1 -0
  315. package/lib/web-map/index.js +2241 -0
  316. package/lib/web-map/style/css.js +15 -0
  317. package/lib/web-map/style/index.js +15 -0
  318. package/lib/web-map/style/web-map.css +1 -0
  319. package/package.json +97 -0
  320. package/src/common/_assets/iconfont/icon-sm-components.css +245 -0
  321. package/src/common/_assets/iconfont/icon-sm-components.eot +0 -0
  322. package/src/common/_assets/iconfont/icon-sm-components.svg +197 -0
  323. package/src/common/_assets/iconfont/icon-sm-components.ttf +0 -0
  324. package/src/common/_assets/iconfont/icon-sm-components.woff +0 -0
  325. package/src/common/_assets/iconfont/icon-sm-components.woff2 +0 -0
  326. package/src/common/_lang/en.js +355 -0
  327. package/src/common/_lang/index.js +177 -0
  328. package/src/common/_lang/zh.js +342 -0
  329. package/src/common/_mixin/AntdRender.ts +114 -0
  330. package/src/common/_mixin/Card.ts +22 -0
  331. package/src/common/_mixin/Theme.ts +222 -0
  332. package/src/common/_mixin/ThirdService.ts +58 -0
  333. package/src/common/_mixin/Timer.ts +58 -0
  334. package/src/common/_mixin/VmUpdater.ts +46 -0
  335. package/src/common/_types/AddressMatchParameter.js +9 -0
  336. package/src/common/_types/GeoJSONParamter.ts +17 -0
  337. package/src/common/_types/RestDataParameter.js +8 -0
  338. package/src/common/_types/RestMapParameter.js +8 -0
  339. package/src/common/_types/RestParameter.js +12 -0
  340. package/src/common/_types/event/BaseTypes.js +24 -0
  341. package/src/common/_types/event/Event.js +315 -0
  342. package/src/common/_types/event/Events.js +353 -0
  343. package/src/common/_types/event/Pixel.js +177 -0
  344. package/src/common/_types/event/Util.js +173 -0
  345. package/src/common/_types/iPortalDataParameter.js +12 -0
  346. package/src/common/_types/iServerBaseParameter.ts +28 -0
  347. package/src/common/_types/iServerDataParameter.ts +13 -0
  348. package/src/common/_types/iServerMapParameter.ts +13 -0
  349. package/src/common/_utils/EchartsDataService.js +527 -0
  350. package/src/common/_utils/RestService.js +130 -0
  351. package/src/common/_utils/WebMapService.ts +1292 -0
  352. package/src/common/_utils/epsg-define.js +55 -0
  353. package/src/common/_utils/get-features.js +92 -0
  354. package/src/common/_utils/global-event.js +6 -0
  355. package/src/common/_utils/iPortalDataService.js +444 -0
  356. package/src/common/_utils/iServerRestService.js +487 -0
  357. package/src/common/_utils/statistics.js +36 -0
  358. package/src/common/_utils/style/color/colorPalette.ts +63 -0
  359. package/src/common/_utils/style/color/serialColors.ts +207 -0
  360. package/src/common/_utils/style/common/common.scss +39 -0
  361. package/src/common/_utils/style/mixins/config.scss +4 -0
  362. package/src/common/_utils/style/mixins/mixins.scss +48 -0
  363. package/src/common/_utils/style/theme/antd.less +2 -0
  364. package/src/common/_utils/style/theme/antdVar.less +371 -0
  365. package/src/common/_utils/style/theme/chart.js +548 -0
  366. package/src/common/_utils/style/theme/set-theme.ts +43 -0
  367. package/src/common/_utils/style/theme/theme.json +356 -0
  368. package/src/common/_utils/style/theme/theme.scss +495 -0
  369. package/src/common/_utils/util.js +251 -0
  370. package/src/common/_utils/vue-types/index.js +267 -0
  371. package/src/common/_utils/vue-types/utils.js +194 -0
  372. package/src/common/avatar/Avatar.vue +41 -0
  373. package/src/common/avatar/index.js +9 -0
  374. package/src/common/avatar/style/avatar.scss +8 -0
  375. package/src/common/avatar/style/index.js +4 -0
  376. package/src/common/avatar/style/index.less +3 -0
  377. package/src/common/border/Border.vue +121 -0
  378. package/src/common/border/assets/border.config.json +67 -0
  379. package/src/common/border/assets/image/border1.png +0 -0
  380. package/src/common/border/assets/image/border10.png +0 -0
  381. package/src/common/border/assets/image/border11.png +0 -0
  382. package/src/common/border/assets/image/border12.png +0 -0
  383. package/src/common/border/assets/image/border13.png +0 -0
  384. package/src/common/border/assets/image/border2.png +0 -0
  385. package/src/common/border/assets/image/border3.png +0 -0
  386. package/src/common/border/assets/image/border4.png +0 -0
  387. package/src/common/border/assets/image/border5.png +0 -0
  388. package/src/common/border/assets/image/border6.png +0 -0
  389. package/src/common/border/assets/image/border7.png +0 -0
  390. package/src/common/border/assets/image/border8.png +0 -0
  391. package/src/common/border/assets/image/border9.png +0 -0
  392. package/src/common/border/index.js +9 -0
  393. package/src/common/border/style/border.scss +19 -0
  394. package/src/common/border/style/index.js +4 -0
  395. package/src/common/breadcrumb/Breadcrumb.vue +21 -0
  396. package/src/common/breadcrumb/BreadcrumbItem.vue +21 -0
  397. package/src/common/breadcrumb/BreadcrumbSeparator.vue +19 -0
  398. package/src/common/breadcrumb/index.js +13 -0
  399. package/src/common/breadcrumb/style/breadcrumb.scss +21 -0
  400. package/src/common/breadcrumb/style/index.js +4 -0
  401. package/src/common/breadcrumb/style/index.less +3 -0
  402. package/src/common/button/Button.vue +34 -0
  403. package/src/common/button/Group.vue +31 -0
  404. package/src/common/button/index.js +11 -0
  405. package/src/common/button/style/button.scss +91 -0
  406. package/src/common/button/style/index.js +4 -0
  407. package/src/common/button/style/index.less +3 -0
  408. package/src/common/button/style/mixin.scss +56 -0
  409. package/src/common/card/Card.vue +32 -0
  410. package/src/common/card/Grid.vue +20 -0
  411. package/src/common/card/Meta.vue +20 -0
  412. package/src/common/card/index.js +13 -0
  413. package/src/common/card/style/card.scss +43 -0
  414. package/src/common/card/style/index.js +4 -0
  415. package/src/common/card/style/index.less +3 -0
  416. package/src/common/chart/ChartMixin.vue +1572 -0
  417. package/src/common/chart/index.js +9 -0
  418. package/src/common/chart/style/chart.scss +10 -0
  419. package/src/common/chart/style/index.js +5 -0
  420. package/src/common/checkbox/Checkbox.vue +37 -0
  421. package/src/common/checkbox/Group.vue +36 -0
  422. package/src/common/checkbox/index.js +11 -0
  423. package/src/common/checkbox/style/checkbox.scss +40 -0
  424. package/src/common/checkbox/style/index.js +4 -0
  425. package/src/common/checkbox/style/index.less +3 -0
  426. package/src/common/collapse/Collapse.vue +32 -0
  427. package/src/common/collapse/Panel.vue +26 -0
  428. package/src/common/collapse/index.js +11 -0
  429. package/src/common/collapse/style/collapse.scss +10 -0
  430. package/src/common/collapse/style/index.js +4 -0
  431. package/src/common/collapse/style/index.less +3 -0
  432. package/src/common/collapse-card/CollapseCard.vue +150 -0
  433. package/src/common/collapse-card/index.js +9 -0
  434. package/src/common/collapse-card/style/collapse-card.scss +176 -0
  435. package/src/common/collapse-card/style/index.js +4 -0
  436. package/src/common/color-picker/ColorPicker.vue +106 -0
  437. package/src/common/color-picker/index.js +9 -0
  438. package/src/common/color-picker/style/color-picker.scss +37 -0
  439. package/src/common/color-picker/style/index.js +4 -0
  440. package/src/common/config-provider/ConfigProvider.vue +31 -0
  441. package/src/common/config-provider/index.js +9 -0
  442. package/src/common/date-picker/BaseMixin.vue +23 -0
  443. package/src/common/date-picker/DatePicker.vue +20 -0
  444. package/src/common/date-picker/MonthPicker.vue +20 -0
  445. package/src/common/date-picker/RangePicker.vue +20 -0
  446. package/src/common/date-picker/WeekPicker.vue +20 -0
  447. package/src/common/date-picker/index.js +15 -0
  448. package/src/common/date-picker/style/date-picker.scss +290 -0
  449. package/src/common/date-picker/style/index.js +4 -0
  450. package/src/common/date-picker/style/index.less +3 -0
  451. package/src/common/date-picker/style/mixin.scss +75 -0
  452. package/src/common/dropdown/Dropdown.vue +31 -0
  453. package/src/common/dropdown/index.js +9 -0
  454. package/src/common/dropdown/style/dropdown.scss +22 -0
  455. package/src/common/dropdown/style/index.js +4 -0
  456. package/src/common/dropdown/style/index.less +3 -0
  457. package/src/common/empty/Empty.vue +26 -0
  458. package/src/common/empty/RenderEmpty.ts +50 -0
  459. package/src/common/empty/assets/image/empty.png +0 -0
  460. package/src/common/empty/index.js +9 -0
  461. package/src/common/empty/style/empty.scss +31 -0
  462. package/src/common/empty/style/index.js +4 -0
  463. package/src/common/empty/style/index.less +3 -0
  464. package/src/common/icon/Icon.vue +66 -0
  465. package/src/common/icon/index.js +9 -0
  466. package/src/common/icon/style/icon.scss +12 -0
  467. package/src/common/icon/style/index.js +4 -0
  468. package/src/common/icon/style/index.less +3 -0
  469. package/src/common/iframe/Iframe.vue +17 -0
  470. package/src/common/iframe/index.js +9 -0
  471. package/src/common/iframe/style/iframe.scss +7 -0
  472. package/src/common/iframe/style/index.js +4 -0
  473. package/src/common/image/Image.vue +83 -0
  474. package/src/common/image/index.js +9 -0
  475. package/src/common/image/style/image.scss +33 -0
  476. package/src/common/image/style/index.js +4 -0
  477. package/src/common/indicator/CountTo.vue +92 -0
  478. package/src/common/indicator/Indicator.vue +308 -0
  479. package/src/common/indicator/index.js +11 -0
  480. package/src/common/indicator/style/countTo.scss +7 -0
  481. package/src/common/indicator/style/index.js +4 -0
  482. package/src/common/indicator/style/indicator.scss +47 -0
  483. package/src/common/input/BaseMixin.vue +24 -0
  484. package/src/common/input/Group.vue +31 -0
  485. package/src/common/input/Input.vue +41 -0
  486. package/src/common/input/Password.vue +41 -0
  487. package/src/common/input/Search.vue +40 -0
  488. package/src/common/input/TextArea.vue +25 -0
  489. package/src/common/input/index.js +17 -0
  490. package/src/common/input/style/index.js +4 -0
  491. package/src/common/input/style/index.less +3 -0
  492. package/src/common/input/style/input.scss +72 -0
  493. package/src/common/input/style/mixin.scss +42 -0
  494. package/src/common/input-number/InputNumber.vue +44 -0
  495. package/src/common/input-number/index.js +9 -0
  496. package/src/common/input-number/style/index.js +4 -0
  497. package/src/common/input-number/style/index.less +3 -0
  498. package/src/common/input-number/style/input-number.scss +43 -0
  499. package/src/common/layout/Content.vue +25 -0
  500. package/src/common/layout/Footer.vue +25 -0
  501. package/src/common/layout/Header.vue +25 -0
  502. package/src/common/layout/Layout.vue +25 -0
  503. package/src/common/layout/Sider.vue +33 -0
  504. package/src/common/layout/index.js +17 -0
  505. package/src/common/layout/style/index.js +4 -0
  506. package/src/common/layout/style/index.less +3 -0
  507. package/src/common/layout/style/layout.scss +5 -0
  508. package/src/common/liquid-fill/LiquidFill.vue +209 -0
  509. package/src/common/liquid-fill/index.js +9 -0
  510. package/src/common/liquid-fill/style/index.js +4 -0
  511. package/src/common/liquid-fill/style/liquid-fill.scss +6 -0
  512. package/src/common/menu/Menu.vue +31 -0
  513. package/src/common/menu/MenuItem.vue +37 -0
  514. package/src/common/menu/SubMenu.vue +51 -0
  515. package/src/common/menu/index.js +13 -0
  516. package/src/common/menu/style/index.js +4 -0
  517. package/src/common/menu/style/index.less +3 -0
  518. package/src/common/menu/style/menu.scss +0 -0
  519. package/src/common/message/Message.js +12 -0
  520. package/src/common/message/index.js +3 -0
  521. package/src/common/message/style/index.js +4 -0
  522. package/src/common/message/style/index.less +3 -0
  523. package/src/common/message/style/message.scss +16 -0
  524. package/src/common/modal/Modal.vue +64 -0
  525. package/src/common/modal/index.js +9 -0
  526. package/src/common/modal/main.ts +49 -0
  527. package/src/common/modal/style/index.js +4 -0
  528. package/src/common/modal/style/index.less +3 -0
  529. package/src/common/modal/style/modal.scss +23 -0
  530. package/src/common/nav/Nav.vue +158 -0
  531. package/src/common/nav/assets/image/background_image.png +0 -0
  532. package/src/common/nav/assets/image/item_active.png +0 -0
  533. package/src/common/nav/index.js +9 -0
  534. package/src/common/nav/style/index.js +5 -0
  535. package/src/common/nav/style/nav.scss +55 -0
  536. package/src/common/notification/Notification.js +10 -0
  537. package/src/common/notification/index.js +3 -0
  538. package/src/common/notification/style/index.js +4 -0
  539. package/src/common/notification/style/index.less +3 -0
  540. package/src/common/notification/style/notification.scss +30 -0
  541. package/src/common/pagination/Pagination.vue +32 -0
  542. package/src/common/pagination/index.js +9 -0
  543. package/src/common/pagination/style/index.js +4 -0
  544. package/src/common/pagination/style/index.less +3 -0
  545. package/src/common/pagination/style/pagination.scss +131 -0
  546. package/src/common/progress/Progress.vue +98 -0
  547. package/src/common/progress/index.js +9 -0
  548. package/src/common/progress/style/index.js +4 -0
  549. package/src/common/progress/style/index.less +3 -0
  550. package/src/common/progress/style/progress.scss +43 -0
  551. package/src/common/radio/Button.vue +18 -0
  552. package/src/common/radio/Group.vue +48 -0
  553. package/src/common/radio/Radio.vue +36 -0
  554. package/src/common/radio/index.js +13 -0
  555. package/src/common/radio/style/index.js +4 -0
  556. package/src/common/radio/style/index.less +3 -0
  557. package/src/common/radio/style/radio.scss +127 -0
  558. package/src/common/select/OptGroup.vue +20 -0
  559. package/src/common/select/Option.vue +22 -0
  560. package/src/common/select/Select.vue +49 -0
  561. package/src/common/select/index.js +13 -0
  562. package/src/common/select/style/index.js +4 -0
  563. package/src/common/select/style/index.less +3 -0
  564. package/src/common/select/style/select.scss +140 -0
  565. package/src/common/slider/Slider.vue +31 -0
  566. package/src/common/slider/index.js +9 -0
  567. package/src/common/slider/style/index.js +4 -0
  568. package/src/common/slider/style/index.less +3 -0
  569. package/src/common/slider/style/slider.scss +8 -0
  570. package/src/common/slideshow/Slideshow.vue +354 -0
  571. package/src/common/slideshow/SlideshowItem.vue +17 -0
  572. package/src/common/slideshow/Swiper.js +29 -0
  573. package/src/common/slideshow/index.js +11 -0
  574. package/src/common/slideshow/style/index.js +5 -0
  575. package/src/common/slideshow/style/slideshow.scss +48 -0
  576. package/src/common/spin/Spin.vue +17 -0
  577. package/src/common/spin/index.js +9 -0
  578. package/src/common/spin/main.ts +13 -0
  579. package/src/common/spin/style/index.js +4 -0
  580. package/src/common/spin/style/index.less +3 -0
  581. package/src/common/spin/style/spin.scss +14 -0
  582. package/src/common/steps/Step.vue +33 -0
  583. package/src/common/steps/Steps.vue +39 -0
  584. package/src/common/steps/index.js +11 -0
  585. package/src/common/steps/style/index.js +4 -0
  586. package/src/common/steps/style/index.less +3 -0
  587. package/src/common/steps/style/mixin.scss +67 -0
  588. package/src/common/steps/style/steps.scss +98 -0
  589. package/src/common/switch/Switch.vue +41 -0
  590. package/src/common/switch/index.js +9 -0
  591. package/src/common/switch/style/index.js +4 -0
  592. package/src/common/switch/style/index.less +3 -0
  593. package/src/common/switch/style/switch.scss +20 -0
  594. package/src/common/table/Column.vue +18 -0
  595. package/src/common/table/ColumnGroup.vue +19 -0
  596. package/src/common/table/Table.vue +18 -0
  597. package/src/common/table/index.js +13 -0
  598. package/src/common/table/style/index.js +4 -0
  599. package/src/common/table/style/index.less +3 -0
  600. package/src/common/table/style/table.scss +138 -0
  601. package/src/common/table-popup/TablePopup.vue +73 -0
  602. package/src/common/table-popup/index.js +9 -0
  603. package/src/common/table-popup/style/index.js +5 -0
  604. package/src/common/table-popup/style/table-popup.scss +52 -0
  605. package/src/common/tabs/TabPane.vue +26 -0
  606. package/src/common/tabs/Tabs.vue +41 -0
  607. package/src/common/tabs/index.js +11 -0
  608. package/src/common/tabs/style/index.js +4 -0
  609. package/src/common/tabs/style/index.less +3 -0
  610. package/src/common/tabs/style/tabs.scss +95 -0
  611. package/src/common/text/Text.vue +69 -0
  612. package/src/common/text/index.js +9 -0
  613. package/src/common/text/style/index.js +4 -0
  614. package/src/common/text/style/text.scss +23 -0
  615. package/src/common/time-line/TimeLine.vue +260 -0
  616. package/src/common/time-line/index.js +9 -0
  617. package/src/common/time-line/style/index.js +4 -0
  618. package/src/common/time-line/style/time-line.scss +10 -0
  619. package/src/common/time-picker/TimePicker.vue +47 -0
  620. package/src/common/time-picker/index.js +9 -0
  621. package/src/common/time-picker/style/index.js +4 -0
  622. package/src/common/time-picker/style/index.less +3 -0
  623. package/src/common/time-picker/style/time-picker.scss +69 -0
  624. package/src/common/time-range/TimeRange.vue +122 -0
  625. package/src/common/time-range/index.js +9 -0
  626. package/src/common/time-range/style/index.js +4 -0
  627. package/src/common/time-range/style/time-range.scss +10 -0
  628. package/src/common/time-slider/TimeSlider.vue +591 -0
  629. package/src/common/time-slider/index.js +9 -0
  630. package/src/common/time-slider/style/index.js +4 -0
  631. package/src/common/time-slider/style/mixin.scss +36 -0
  632. package/src/common/time-slider/style/time-slider.scss +147 -0
  633. package/src/common/time-text/TimeText.vue +51 -0
  634. package/src/common/time-text/index.js +9 -0
  635. package/src/common/time-text/style/index.js +4 -0
  636. package/src/common/time-text/style/time-text.scss +14 -0
  637. package/src/common/tooltip/Tooltip.vue +21 -0
  638. package/src/common/tooltip/index.js +9 -0
  639. package/src/common/tooltip/style/index.js +4 -0
  640. package/src/common/tooltip/style/index.less +3 -0
  641. package/src/common/tooltip/style/tooltip.scss +5 -0
  642. package/src/common/transfer/Transfer.vue +19 -0
  643. package/src/common/transfer/index.js +9 -0
  644. package/src/common/transfer/style/index.js +4 -0
  645. package/src/common/transfer/style/index.less +3 -0
  646. package/src/common/transfer/style/transfer.scss +52 -0
  647. package/src/common/tree/DirectoryTree.vue +32 -0
  648. package/src/common/tree/Tree.vue +32 -0
  649. package/src/common/tree/TreeNode.vue +49 -0
  650. package/src/common/tree/index.js +13 -0
  651. package/src/common/tree/style/index.js +4 -0
  652. package/src/common/tree/style/index.less +3 -0
  653. package/src/common/tree/style/tree.scss +16 -0
  654. package/src/common/tree-select/TreeSelect.vue +43 -0
  655. package/src/common/tree-select/TreeSelectNode.vue +49 -0
  656. package/src/common/tree-select/index.js +11 -0
  657. package/src/common/tree-select/style/index.js +4 -0
  658. package/src/common/tree-select/style/index.less +3 -0
  659. package/src/common/tree-select/style/tree-select.scss +38 -0
  660. package/src/common/video-player/VideoPlayer.vue +423 -0
  661. package/src/common/video-player/index.js +9 -0
  662. package/src/common/video-player/style/index.js +5 -0
  663. package/src/common/video-player/style/video-player.scss +266 -0
  664. package/src/common/web-map/WebMapBase.ts +1178 -0
  665. package/src/common/web-map/config/MunicipalCenter.json +1 -0
  666. package/src/common/web-map/config/ProvinceCenter.json +1 -0
  667. package/src/image.d.ts +7 -0
  668. package/src/init.js +38 -0
  669. package/src/leaflet/README.md +31 -0
  670. package/src/leaflet/_mixin/GridLayer.js +33 -0
  671. package/src/leaflet/_mixin/Layer.js +26 -0
  672. package/src/leaflet/_mixin/Options.js +10 -0
  673. package/src/leaflet/_mixin/Popper.js +25 -0
  674. package/src/leaflet/_mixin/TileLayer.js +18 -0
  675. package/src/leaflet/_mixin/map-getter.ts +122 -0
  676. package/src/leaflet/_types/index.js +17 -0
  677. package/src/leaflet/_types/map-event.js +34 -0
  678. package/src/leaflet/_utils/props-binder.js +23 -0
  679. package/src/leaflet/chart/Chart.vue +25 -0
  680. package/src/leaflet/chart/ChartViewModel.js +44 -0
  681. package/src/leaflet/chart/index.js +9 -0
  682. package/src/leaflet/components.ts +206 -0
  683. package/src/leaflet/css.js +3 -0
  684. package/src/leaflet/entrys.json +106 -0
  685. package/src/leaflet/identify/Identify.vue +233 -0
  686. package/src/leaflet/identify/IdentifyViewModel.js +114 -0
  687. package/src/leaflet/identify/index.js +9 -0
  688. package/src/leaflet/identify/style/identify.scss +30 -0
  689. package/src/leaflet/identify/style/index.js +4 -0
  690. package/src/leaflet/index.ts +5 -0
  691. package/src/leaflet/leaflet-wrapper.js +125 -0
  692. package/src/leaflet/marker/Marker.vue +46 -0
  693. package/src/leaflet/marker/MarkerViewModel.js +31 -0
  694. package/src/leaflet/marker/index.js +9 -0
  695. package/src/leaflet/package.json +97 -0
  696. package/src/leaflet/popup/Popup.vue +93 -0
  697. package/src/leaflet/popup/PopupViewModel.js +75 -0
  698. package/src/leaflet/popup/index.js +9 -0
  699. package/src/leaflet/style.js +3 -0
  700. package/src/leaflet/style.scss +52 -0
  701. package/src/leaflet/web-map/WebMap.vue +213 -0
  702. package/src/leaflet/web-map/WebMapViewModel.ts +1102 -0
  703. package/src/leaflet/web-map/_mixin/map-events.ts +65 -0
  704. package/src/leaflet/web-map/index.js +9 -0
  705. package/src/leaflet/web-map/layer/tile/TileLayer.vue +88 -0
  706. package/src/leaflet/web-map/layer/tile/TileLayerViewModel.js +66 -0
  707. package/src/leaflet/web-map/layer/tile/index.js +9 -0
  708. package/src/leaflet/web-map/style/index.js +7 -0
  709. package/src/leaflet/web-map/style/web-map.scss +32 -0
  710. package/src/sfc.d.ts +50 -0
  711. package/src/vue-i18n.d.ts +26 -0
  712. package/src/vue-options.d.ts +18 -0
  713. package/static/libs/echarts-layer/EchartsLayer.js +390 -0
  714. package/static/libs/geostats/geostats.js +1227 -0
  715. package/static/libs/iclient-common/iclient-common.js +2 -0
  716. package/static/libs/iclient-leaflet/iclient-leaflet.min.css +8 -0
  717. package/static/libs/iclient-leaflet/iclient-leaflet.min.js +1741 -0
  718. package/static/libs/json-sql/jsonsql.js +125 -0
  719. package/tsconfig.json +43 -0
@@ -0,0 +1,1292 @@
1
+ import { Events } from 'vue-iclient/src/common/_types/event/Events';
2
+ import { isXField, isYField, urlAppend, numberEqual } from 'vue-iclient/src/common/_utils/util';
3
+ import { statisticsFeatures } from 'vue-iclient/src/common/_utils/statistics';
4
+ import * as convert from 'xml-js';
5
+ import max from 'lodash.max';
6
+ import min from 'lodash.min';
7
+
8
+ const DEFAULT_WELLKNOWNSCALESET = [
9
+ 'GoogleCRS84Quad',
10
+ 'GoogleMapsCompatible',
11
+ 'urn:ogc:def:wkss:OGC:1.0:GoogleMapsCompatible',
12
+ 'urn:ogc:def:wkss:OGC:1.0:GoogleCRS84Quad'
13
+ ];
14
+ const MB_SCALEDENOMINATOR_3857 = [
15
+ 559082264.0287178, 279541132.0143589, 139770566.00717944, 69885283.00358972, 34942641.50179486, 17471320.75089743,
16
+ 8735660.375448715, 4367830.1877243575, 2183915.0938621787, 1091957.5469310894, 545978.7734655447, 272989.38673277234,
17
+ 136494.69336638617, 68247.34668319309, 34123.67334159654, 17061.83667079827, 8530.918335399136, 4265.459167699568,
18
+ 2132.729583849784, 1066.364791924892, 533.182395962446, 266.591197981223, 133.2955989906115
19
+ ];
20
+ const MB_SCALEDENOMINATOR_4326 = [
21
+ 559082264.0287176, 279541132.0143588, 139770566.0071794, 69885283.0035897, 34942641.50179485, 17471320.750897426,
22
+ 8735660.375448713, 4367830.187724357, 2183915.0938621783, 1091957.5469310891, 545978.7734655446, 272989.3867327723,
23
+ 136494.69336638614, 68247.34668319307, 34123.673341596535, 17061.836670798268, 8530.918335399134, 4265.459167699567,
24
+ 2132.7295838497835, 1066.3647919248917, 533.1823959624459, 266.59119798122293, 133.29559899061147
25
+ ];
26
+
27
+ interface webMapOptions {
28
+ serverUrl?: string;
29
+ accessToken?: string;
30
+ accessKey?: string;
31
+ tiandituKey?: string;
32
+ withCredentials?: boolean;
33
+ excludePortalProxyUrl?: boolean;
34
+ proxy?: boolean | string;
35
+ iportalServiceProxyUrlPrefix?: string;
36
+ }
37
+
38
+ export default class WebMapService extends Events {
39
+ mapId: string | number;
40
+
41
+ mapInfo: any;
42
+
43
+ serverUrl: string;
44
+
45
+ accessToken: string;
46
+
47
+ accessKey: string;
48
+
49
+ tiandituKey: string;
50
+
51
+ withCredentials: boolean;
52
+
53
+ target: string;
54
+
55
+ excludePortalProxyUrl: boolean;
56
+
57
+ isSuperMapOnline: boolean;
58
+
59
+ proxy: boolean | string;
60
+
61
+ iportalServiceProxyUrl: string;
62
+
63
+ proxyOptions: Object = {
64
+ data: 'apps/viewer/getUrlResource.json?url=',
65
+ image: 'apps/viewer/getUrlResource.png?url='
66
+ };
67
+
68
+ constructor(mapId: string | number | Object, options: webMapOptions = {}) {
69
+ super();
70
+ if (typeof mapId === 'string' || typeof mapId === 'number') {
71
+ this.mapId = mapId;
72
+ } else if (mapId !== null && typeof mapId === 'object') {
73
+ this.mapInfo = mapId;
74
+ }
75
+ this.serverUrl = options.serverUrl || 'https://www.supermapol.com';
76
+ this.accessToken = options.accessToken;
77
+ this.accessKey = options.accessKey;
78
+ this.tiandituKey = options.tiandituKey || '';
79
+ this.withCredentials = options.withCredentials || false;
80
+ this.excludePortalProxyUrl = options.excludePortalProxyUrl;
81
+ this.iportalServiceProxyUrl = options.iportalServiceProxyUrlPrefix;
82
+ this.proxy = options.proxy;
83
+ }
84
+
85
+ public setMapId(mapId: string | number | Object): void {
86
+ if (typeof mapId === 'string' || typeof mapId === 'number') {
87
+ this.mapId = mapId;
88
+ this.mapInfo = null;
89
+ } else if (mapId !== null && typeof mapId === 'object') {
90
+ this.mapInfo = mapId;
91
+ this.mapId = '';
92
+ }
93
+ }
94
+
95
+ public setServerUrl(serverUrl: string): void {
96
+ this.serverUrl = serverUrl;
97
+ }
98
+
99
+ public setWithCredentials(withCredentials) {
100
+ this.withCredentials = withCredentials;
101
+ }
102
+
103
+ public setProxy(proxy) {
104
+ this.proxy = proxy;
105
+ }
106
+
107
+ public handleServerUrl(serverUrl) {
108
+ let urlArr: string[] = serverUrl.split('');
109
+ if (urlArr[urlArr.length - 1] !== '/') {
110
+ serverUrl += '/';
111
+ }
112
+ this.serverUrl = serverUrl;
113
+ return serverUrl;
114
+ }
115
+
116
+ public getMapInfo() {
117
+ if (!this.mapId && this.mapInfo) {
118
+ return new Promise(resolve => {
119
+ resolve(this.mapInfo);
120
+ });
121
+ }
122
+ let mapUrl = this._handleMapUrl();
123
+ return new Promise(async (resolve, reject) => {
124
+ try {
125
+ await this.getiPortalServiceProxy();
126
+ SuperMap.FetchRequest.get(mapUrl, null, {
127
+ withCredentials: this.withCredentials
128
+ })
129
+ .then(response => {
130
+ return response.json();
131
+ })
132
+ .then(mapInfo => {
133
+ if (mapInfo && mapInfo.succeed === false) {
134
+ let error = { message: mapInfo && mapInfo.error && mapInfo.error.errorMsg };
135
+ reject(error);
136
+ return;
137
+ }
138
+
139
+ mapInfo.mapParams = {
140
+ title: mapInfo.title,
141
+ description: mapInfo.description
142
+ };
143
+ resolve(mapInfo);
144
+ })
145
+ .catch(error => {
146
+ reject(error);
147
+ });
148
+ } catch (err) {
149
+ reject(err);
150
+ }
151
+ });
152
+ }
153
+
154
+ public getiPortalServiceProxy() {
155
+ return new Promise((resolve, reject) => {
156
+ SuperMap.FetchRequest.get(`${this.serverUrl}web/config/portal.json`, { scope: ['serviceProxy'] })
157
+ .then(response => {
158
+ return response.json();
159
+ })
160
+ .then(serviceProxyInfo => {
161
+ if (!serviceProxyInfo || !serviceProxyInfo.serviceProxy) {
162
+ reject('serviceProxyFailed');
163
+ return;
164
+ }
165
+ const serviceProxy = serviceProxyInfo.serviceProxy;
166
+ if (serviceProxy.enable) {
167
+ if (serviceProxy.proxyServerRootUrl) {
168
+ this.iportalServiceProxyUrl = serviceProxy.proxyServerRootUrl;
169
+ } else if (serviceProxy.port && serviceProxy.rootUrlPostfix) {
170
+ this.iportalServiceProxyUrl = `${serviceProxy.port}/${serviceProxy.rootUrlPostfix}`;
171
+ }
172
+ if (this.serverUrl.indexOf(this.iportalServiceProxyUrl) > -1) {
173
+ this.iportalServiceProxyUrl = '';
174
+ }
175
+ }
176
+ resolve(serviceProxy);
177
+ })
178
+ .catch(error => {
179
+ reject(error);
180
+ });
181
+ });
182
+ }
183
+
184
+ public getLayerFeatures(type, layer, baseProjection?) {
185
+ let pro;
186
+ switch (type) {
187
+ case 'hosted':
188
+ // 数据存储到iportal上了
189
+ pro = this._getFeaturesFromHosted(layer, baseProjection);
190
+ break;
191
+ case 'rest_data':
192
+ pro = this._getFeaturesFromRestData(layer, baseProjection);
193
+ break;
194
+ case 'rest_map':
195
+ pro = this._getFeaturesFromRestMap(layer);
196
+ break;
197
+ case 'dataflow':
198
+ pro = this._getFeaturesFromDataflow(layer);
199
+ break;
200
+ case 'user_data':
201
+ pro = this._getFeaturesFromUserData(layer);
202
+ break;
203
+ }
204
+ return pro;
205
+ }
206
+
207
+ public getWmsInfo(layerInfo) {
208
+ return new Promise(resolve => {
209
+ const proxy = this.handleProxy();
210
+ const serviceUrl = SuperMap.Util.urlAppend(layerInfo.url, 'REQUEST=GetCapabilities&SERVICE=WMS');
211
+ SuperMap.FetchRequest.get(serviceUrl, null, {
212
+ withCredentials: this.handleWithCredentials(proxy, layerInfo.url, false),
213
+ withoutFormatSuffix: true,
214
+ proxy
215
+ })
216
+ .then(response => {
217
+ return response.text();
218
+ })
219
+ .then(capabilitiesText => {
220
+ let converts = convert || window.convert;
221
+ const capabilities = JSON.parse(
222
+ converts.xml2json(capabilitiesText, {
223
+ compact: true,
224
+ spaces: 4
225
+ })
226
+ );
227
+ const wmsCapabilities = capabilities.WMT_MS_Capabilities || capabilities.WMS_Capabilities;
228
+ resolve({ version: wmsCapabilities['_attributes']['version'] });
229
+ });
230
+ });
231
+ }
232
+
233
+ public getMapBoxStyle(styleURL) {
234
+ return new Promise((resolve, reject) => {
235
+ SuperMap.FetchRequest.get(styleURL)
236
+ .then(response => {
237
+ return response.json();
238
+ })
239
+ .then(styleJSON => {
240
+ resolve(styleJSON);
241
+ })
242
+ .catch(error => {
243
+ reject(error);
244
+ });
245
+ });
246
+ }
247
+
248
+ public getWmtsInfo(layerInfo, mapCRS) {
249
+ return new Promise((resolve, reject) => {
250
+ let isMatched = false;
251
+ let matchMaxZoom = 22;
252
+ let matchMinZoom = 0;
253
+ let style = '';
254
+ let bounds;
255
+ let restResourceURL = '';
256
+ let kvpResourceUrl = '';
257
+ const proxy = this.handleProxy();
258
+ let serviceUrl = SuperMap.Util.urlAppend(layerInfo.url, 'REQUEST=GetCapabilities&SERVICE=WMTS&VERSION=1.0.0');
259
+ serviceUrl = this.handleParentRes(serviceUrl);
260
+ SuperMap.FetchRequest.get(serviceUrl, null, {
261
+ withCredentials: this.handleWithCredentials(proxy, layerInfo.url, false),
262
+ withoutFormatSuffix: true,
263
+ proxy
264
+ })
265
+ .then(response => {
266
+ return response.text();
267
+ })
268
+ .then(capabilitiesText => {
269
+ let converts = convert || window.convert;
270
+ const capabilities = JSON.parse(
271
+ converts.xml2json(capabilitiesText, {
272
+ compact: true,
273
+ spaces: 4,
274
+ // 用于决定哪些字段必须返回数组格式
275
+ alwaysArray: ['Layer', 'TileMatrixSet', 'ows:Operation', 'ows:Get', 'ResourceURL', 'Style']
276
+ })
277
+ ).Capabilities;
278
+ const content = capabilities.Contents;
279
+ const metaData = capabilities['ows:OperationsMetadata'];
280
+ if (metaData) {
281
+ let operations = metaData['ows:Operation'];
282
+ if (!Array.isArray(operations)) {
283
+ operations = [operations];
284
+ }
285
+ const operation = operations.find(item => {
286
+ return item._attributes.name === 'GetTile';
287
+ });
288
+ if (operation) {
289
+ let getConstraints = operation['ows:DCP']['ows:HTTP']['ows:Get'];
290
+ if (!Array.isArray(getConstraints)) {
291
+ getConstraints = [getConstraints];
292
+ }
293
+ const getConstraint = getConstraints.find(item => {
294
+ return item['ows:Constraint']['ows:AllowedValues']['ows:Value']['_text'] === 'KVP';
295
+ });
296
+ if (getConstraint) {
297
+ kvpResourceUrl = getConstraint['_attributes']['xlink:href'];
298
+ }
299
+ }
300
+ }
301
+ let tileMatrixSet = content.TileMatrixSet;
302
+ for (let i = 0; i < tileMatrixSet.length; i++) {
303
+ if (
304
+ tileMatrixSet[i]['ows:Identifier'] &&
305
+ tileMatrixSet[i]['ows:Identifier']['_text'] === layerInfo.tileMatrixSet
306
+ ) {
307
+ if (
308
+ tileMatrixSet[i]['WellKnownScaleSet'] &&
309
+ DEFAULT_WELLKNOWNSCALESET.includes(tileMatrixSet[i]['WellKnownScaleSet']['_text'])
310
+ ) {
311
+ isMatched = true;
312
+ } else {
313
+ let matchedScaleDenominator = {};
314
+ // 坐标系判断
315
+ let defaultCRSScaleDenominators =
316
+ // @ts-ignore -------- crs 为 enhance 新加属性
317
+ mapCRS === 'EPSG:3857' ? MB_SCALEDENOMINATOR_3857 : MB_SCALEDENOMINATOR_4326;
318
+ let defaultCRSTopLeftCorner =
319
+ // @ts-ignore -------- crs 为 enhance 新加属性
320
+ mapCRS === 'EPSG:3857' ? [-2.0037508342789248e7, 2.0037508342789087e7] : [-180, 90];
321
+ for (let j = 0; j < tileMatrixSet[i].TileMatrix.length; j++) {
322
+ const tileMatrix = tileMatrixSet[i].TileMatrix[j];
323
+ const identifier = tileMatrix['ows:Identifier']['_text'];
324
+ const topLeftCorner = [...tileMatrix['TopLeftCorner']['_text'].split(' ')];
325
+ if (
326
+ (!numberEqual(topLeftCorner[0], defaultCRSTopLeftCorner[0]) ||
327
+ !numberEqual(topLeftCorner[1], defaultCRSTopLeftCorner[1])) &&
328
+ (!numberEqual(topLeftCorner[0], defaultCRSTopLeftCorner[1]) ||
329
+ !numberEqual(topLeftCorner[1], defaultCRSTopLeftCorner[0]))
330
+ ) {
331
+ break;
332
+ }
333
+ const defaultScaleDenominator = defaultCRSScaleDenominators[+identifier];
334
+ if (!defaultScaleDenominator) {
335
+ break;
336
+ }
337
+ const scaleDenominator = parseFloat(tileMatrixSet[i].TileMatrix[j]['ScaleDenominator']['_text']);
338
+ if (numberEqual(defaultScaleDenominator, scaleDenominator)) {
339
+ matchedScaleDenominator[+identifier] = scaleDenominator;
340
+ } else {
341
+ if (Object.keys(matchedScaleDenominator).length > 0) {
342
+ break;
343
+ } else {
344
+ continue;
345
+ }
346
+ }
347
+ }
348
+ const zooms = Object.keys(matchedScaleDenominator).map(element => {
349
+ return +element;
350
+ });
351
+ matchMaxZoom = max(zooms);
352
+ matchMinZoom = min(zooms);
353
+ if (zooms.length !== 0) {
354
+ isMatched = true;
355
+ } else {
356
+ throw Error('TileMatrixSetNotSuppport');
357
+ }
358
+ }
359
+ break;
360
+ }
361
+ }
362
+ const layer = content.Layer.find(item => {
363
+ return item['ows:Identifier']['_text'] === layerInfo.layer;
364
+ });
365
+ if (layer) {
366
+ let styles = layer.Style;
367
+ if (Array.isArray(layer.Style)) {
368
+ style = styles[0]['ows:Identifier'] ? styles[0]['ows:Identifier']['_text'] : '';
369
+ } else {
370
+ style = styles['ows:Identifier'] ? styles['ows:Identifier']['_text'] : '';
371
+ }
372
+ if (layer['ows:WGS84BoundingBox']) {
373
+ const lowerCorner = layer['ows:WGS84BoundingBox']['ows:LowerCorner']['_text'].split(' ');
374
+ const upperCorner = layer['ows:WGS84BoundingBox']['ows:UpperCorner']['_text'].split(' ');
375
+ bounds = [
376
+ parseFloat(lowerCorner[0]),
377
+ parseFloat(lowerCorner[1]),
378
+ parseFloat(upperCorner[0]),
379
+ parseFloat(upperCorner[1])
380
+ ];
381
+ }
382
+ let resourceUrls = layer.ResourceURL;
383
+ if (!Array.isArray(resourceUrls)) {
384
+ resourceUrls = [resourceUrls];
385
+ }
386
+ const resourceUrl = resourceUrls.find(item => {
387
+ return item._attributes.resourceType === 'tile';
388
+ });
389
+ if (resourceUrl) {
390
+ restResourceURL = resourceUrl._attributes.template;
391
+ }
392
+ }
393
+ resolve({ isMatched, matchMaxZoom, matchMinZoom, style, bounds, restResourceURL, kvpResourceUrl });
394
+ })
395
+ .catch(error => {
396
+ reject(error);
397
+ });
398
+ });
399
+ }
400
+
401
+ private _getFeaturesFromHosted(layer, baseProjection?) {
402
+ let { dataSource, layerType } = layer;
403
+ let serverId = dataSource ? dataSource.serverId : layer.serverId;
404
+
405
+ if (!serverId) {
406
+ return new Promise(resolve => {
407
+ resolve({ type: 'noServerId' });
408
+ });
409
+ }
410
+ let getDataFromIportal =
411
+ layerType === 'MARKER' || (dataSource && (!dataSource.accessType || dataSource.accessType === 'DIRECT'));
412
+
413
+ if (getDataFromIportal) {
414
+ return this._getDataFromIportal(serverId, layer);
415
+ } else {
416
+ return this._getDataFromHosted({ layer, serverId, baseProjection });
417
+ }
418
+ }
419
+
420
+ private _getFeaturesFromRestData(layer, baseProjection?) {
421
+ // 从restData获取数据
422
+ let features;
423
+ let dataSource = layer.dataSource;
424
+ return new Promise((resolve, reject) => {
425
+ this._getFeatureBySQL(
426
+ dataSource.url,
427
+ [decodeURIComponent(dataSource.dataSourceName) || layer.name],
428
+ result => {
429
+ features = this.parseGeoJsonData2Feature({
430
+ allDatas: {
431
+ features: result.result.features.features
432
+ }
433
+ });
434
+ resolve({ type: 'feature', features });
435
+ },
436
+ err => {
437
+ reject(err);
438
+ },
439
+ baseProjection
440
+ );
441
+ });
442
+ }
443
+
444
+ private _getFeaturesFromRestMap(layer) {
445
+ return new Promise((resolve, reject) => {
446
+ this._queryFeatureBySQL(
447
+ layer.dataSource.url,
448
+ layer.dataSource.layerName,
449
+ result => {
450
+ let recordsets = result && result.result.recordsets;
451
+ let recordset = recordsets && recordsets[0];
452
+ let attributes = recordset.fields;
453
+ if (recordset && attributes) {
454
+ let fileterAttrs: string[] = [];
455
+ for (let i in attributes) {
456
+ let value = attributes[i];
457
+ if (value.indexOf('Sm') !== 0 || value === 'SmID') {
458
+ fileterAttrs.push(value);
459
+ }
460
+ }
461
+ this._getFeatures(
462
+ fileterAttrs,
463
+ layer,
464
+ features => {
465
+ resolve({ type: 'feature', features });
466
+ },
467
+ err => {
468
+ reject(err);
469
+ }
470
+ );
471
+ }
472
+ },
473
+ err => {
474
+ reject(err);
475
+ },
476
+ 'smid=1'
477
+ );
478
+ });
479
+ }
480
+
481
+ private _getFeaturesFromUserData(layer) {
482
+ let dataSource = layer.dataSource;
483
+ return new Promise((resolve, reject) => {
484
+ const proxy = this.handleProxy();
485
+ let serviceUrl = this.handleParentRes(dataSource.url);
486
+ SuperMap.FetchRequest.get(serviceUrl, null, {
487
+ withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
488
+ proxy,
489
+ withoutFormatSuffix: true
490
+ })
491
+ .then(response => {
492
+ return response.json();
493
+ })
494
+ .then(data => {
495
+ let features;
496
+ if (data && data instanceof Object && data.type === 'FeatureCollection') {
497
+ features = data.features;
498
+ } else {
499
+ features = data;
500
+ }
501
+ features = this.parseGeoJsonData2Feature({
502
+ allDatas: {
503
+ features
504
+ }
505
+ });
506
+ resolve({ type: 'feature', features });
507
+ })
508
+ .catch(err => {
509
+ reject(err);
510
+ });
511
+ });
512
+ }
513
+
514
+ private _queryFeatureBySQL(
515
+ url: string,
516
+ layerName: string,
517
+ processCompleted: Function,
518
+ processFaild: Function,
519
+ attributeFilter?: string,
520
+ fields?: Array<string>,
521
+ epsgCode?: string,
522
+ startRecord?,
523
+ recordLength?,
524
+ onlyAttribute?
525
+ ): void {
526
+ let queryBySQLParams = this._getQueryFeaturesParam(
527
+ layerName,
528
+ attributeFilter,
529
+ fields,
530
+ epsgCode,
531
+ startRecord,
532
+ recordLength,
533
+ onlyAttribute
534
+ );
535
+ const proxy = this.handleProxy();
536
+ let serviceUrl = this.handleParentRes(url);
537
+ // @ts-ignore
538
+ let queryBySQLService = new SuperMap.QueryBySQLService(serviceUrl, {
539
+ proxy,
540
+ withCredentials: this.handleWithCredentials(proxy, url, false),
541
+ eventListeners: {
542
+ processCompleted: data => {
543
+ processCompleted && processCompleted(data);
544
+ },
545
+ processFailed: data => {
546
+ processFaild && processFaild(data);
547
+ }
548
+ }
549
+ });
550
+ queryBySQLService.processAsync(queryBySQLParams);
551
+ }
552
+
553
+ private _getFeatures(fields: string[], layerInfo: any, resolve: Function, reject: Function): void {
554
+ let source = layerInfo.dataSource;
555
+ // 示例数据
556
+ this._queryFeatureBySQL(
557
+ source.url,
558
+ source.layerName,
559
+ result => {
560
+ let recordsets = result.result.recordsets[0];
561
+ let features = recordsets.features.features;
562
+
563
+ let featuresObj = this.parseGeoJsonData2Feature({
564
+ allDatas: { features }
565
+ });
566
+ resolve(featuresObj);
567
+ },
568
+ err => {
569
+ reject(err);
570
+ },
571
+ null,
572
+ fields
573
+ );
574
+ }
575
+
576
+ private _getQueryFeaturesParam(
577
+ layerName: string,
578
+ attributeFilter?: string,
579
+ fields?: Array<string>,
580
+ epsgCode?: string,
581
+ startRecord?,
582
+ recordLength?,
583
+ onlyAttribute?
584
+ ) {
585
+ let queryParam = new SuperMap.FilterParameter({
586
+ name: layerName,
587
+ attributeFilter: attributeFilter
588
+ });
589
+
590
+ if (fields) {
591
+ queryParam.fields = fields;
592
+ }
593
+
594
+ let params: any = {
595
+ queryParams: [queryParam]
596
+ };
597
+
598
+ if (onlyAttribute) {
599
+ params.queryOption = SuperMap.QueryOption.ATTRIBUTE;
600
+ }
601
+
602
+ startRecord && (params.startRecord = startRecord);
603
+ recordLength && (params.expectCount = recordLength);
604
+
605
+ if (epsgCode) {
606
+ params.prjCoordSys = {
607
+ epsgCode: epsgCode
608
+ };
609
+ }
610
+
611
+ let queryBySQLParams = new SuperMap.QueryBySQLParameters(params);
612
+
613
+ return queryBySQLParams;
614
+ }
615
+
616
+ private _getFeaturesFromDataflow(layer) {
617
+ return new Promise((resolve, reject) => {
618
+ this._getDataflowInfo(
619
+ layer,
620
+ () => {
621
+ resolve({ type: 'dataflow' });
622
+ },
623
+ e => {
624
+ reject(e);
625
+ }
626
+ );
627
+ });
628
+ }
629
+
630
+ private _getDataflowInfo(layerInfo, success, faild?) {
631
+ let url = layerInfo.url;
632
+ let token;
633
+ let requestUrl = `${url}.json`;
634
+ if (layerInfo.credential && layerInfo.credential.token) {
635
+ token = layerInfo.credential.token;
636
+ requestUrl += `?token=${token}`;
637
+ }
638
+ const proxy = this.handleProxy();
639
+ requestUrl = this.handleParentRes(requestUrl);
640
+ SuperMap.FetchRequest.get(requestUrl, null, {
641
+ proxy,
642
+ withCredentials: this.handleWithCredentials(proxy, requestUrl, false)
643
+ })
644
+ .then(function (response) {
645
+ return response.json();
646
+ })
647
+ .then(function (result) {
648
+ if (!result) {
649
+ faild();
650
+ return;
651
+ }
652
+ if (result.featureMetaData) {
653
+ layerInfo.featureType = result.featureMetaData.featureType.toUpperCase();
654
+ layerInfo.dataSource = { dataTypes: {} };
655
+ if (result.featureMetaData.fieldInfos && result.featureMetaData.fieldInfos.length > 0) {
656
+ result.featureMetaData.fieldInfos.forEach(function (data) {
657
+ let name = data.name.trim();
658
+ if (data.type === 'TEXT') {
659
+ layerInfo.dataSource.dataTypes[name] = 'STRING';
660
+ } else if (['DOUBLE', 'INT', 'FLOAT', 'LONG', 'SHORT'].includes(data.type)) {
661
+ layerInfo.dataSource.dataTypes[name] = 'NUMBER';
662
+ } else {
663
+ layerInfo.dataSource.dataTypes[name] = 'UNKNOWN';
664
+ }
665
+ });
666
+ }
667
+ }
668
+ layerInfo.wsUrl = result.urls[0].url;
669
+ layerInfo.name = result.urls[0].url.split('iserver/services/')[1].split('/dataflow')[0];
670
+ success();
671
+ })
672
+ .catch(function () {
673
+ faild();
674
+ });
675
+ }
676
+
677
+ public getDatasourceType(layer) {
678
+ let { dataSource, layerType } = layer;
679
+ if (dataSource && dataSource.type === 'SAMPLE_DATA') {
680
+ return dataSource.type;
681
+ }
682
+ let type;
683
+ let isHosted = (dataSource && dataSource.serverId) || layerType === 'MARKER' || layerType === 'HOSTED_TILE';
684
+ let isTile =
685
+ layerType === 'SUPERMAP_REST' ||
686
+ layerType === 'TILE' ||
687
+ layerType === 'WMS' ||
688
+ layerType === 'WMTS' ||
689
+ layerType === 'MAPBOXSTYLE';
690
+ if (isHosted) {
691
+ type = 'hosted';
692
+ } else if (isTile) {
693
+ type = 'tile';
694
+ } else if (dataSource && dataSource.type === 'REST_DATA') {
695
+ type = 'rest_data';
696
+ } else if (dataSource && dataSource.type === 'REST_MAP' && dataSource.url) {
697
+ type = 'rest_map';
698
+ } else if (layerType === 'DATAFLOW_POINT_TRACK' || layerType === 'DATAFLOW_HEAT') {
699
+ type = 'dataflow';
700
+ } else if (dataSource && dataSource.type === 'USER_DATA') {
701
+ type = 'user_data';
702
+ }
703
+ return type;
704
+ }
705
+
706
+ public getFeatureProperties(features) {
707
+ let properties = [];
708
+ if (features && features.length) {
709
+ features.forEach(feature => {
710
+ let property = feature.properties;
711
+ property && properties.push(property);
712
+ });
713
+ }
714
+ return properties;
715
+ }
716
+
717
+ public parseGeoJsonData2Feature(metaData: any) {
718
+ let allFeatures = metaData.allDatas.features;
719
+ let features = [];
720
+ for (let i = 0, len = allFeatures.length; i < len; i++) {
721
+ let feature = allFeatures[i];
722
+ let coordinate = feature.geometry.coordinates;
723
+ if (allFeatures[i].geometry.type === 'Point') {
724
+ // 标注图层 还没有属性值时候不加
725
+ if (allFeatures[i].properties) {
726
+ allFeatures[i].properties.lon = coordinate[0];
727
+ allFeatures[i].properties.lat = coordinate[1];
728
+ }
729
+ }
730
+ feature.properties['index'] = i + '';
731
+ features.push(feature);
732
+ }
733
+ return features;
734
+ }
735
+
736
+ private _getDataFromIportal(serverId, layerInfo) {
737
+ let features;
738
+ // 原来二进制文件
739
+ let url = `${this.serverUrl}web/datas/${serverId}/content.json?pageSize=9999999&currentPage=1`;
740
+ if (this.accessToken) {
741
+ url = `${url}&${this.accessKey}=${this.accessToken}`;
742
+ }
743
+ return new Promise((resolve, reject) => {
744
+ url = this.handleParentRes(url);
745
+ const proxy = this.handleProxy();
746
+ SuperMap.FetchRequest.get(url, null, {
747
+ withCredentials: this.handleWithCredentials(proxy, url, this.withCredentials),
748
+ proxy
749
+ })
750
+ .then(response => {
751
+ return response.json();
752
+ })
753
+ .then(async data => {
754
+ if (data.succeed === false) {
755
+ reject(data.error);
756
+ }
757
+ if (data && data.type) {
758
+ if (data.type === 'JSON' || data.type === 'GEOJSON') {
759
+ data.content = JSON.parse(data.content.trim());
760
+ features = this._formatGeoJSON(data.content);
761
+ } else if (data.type === 'EXCEL' || data.type === 'CSV') {
762
+ if (layerInfo.dataSource && layerInfo.dataSource.administrativeInfo) {
763
+ // 行政规划信息
764
+ data.content.rows.unshift(data.content.colTitles);
765
+ const { divisionType, divisionField } = layerInfo.dataSource.administrativeInfo;
766
+ const geojson = await this._excelData2FeatureByDivision(data.content, divisionType, divisionField);
767
+ features = this._formatGeoJSON(geojson);
768
+ } else {
769
+ features = this._excelData2Feature(data.content, (layerInfo && layerInfo.xyField) || {});
770
+ }
771
+ } else if (data.type === 'SHP') {
772
+ data.content = JSON.parse(data.content.trim());
773
+ features = this._formatGeoJSON(data.content.layers[0]);
774
+ }
775
+ resolve({ type: 'feature', features });
776
+ }
777
+ })
778
+ .catch(error => {
779
+ reject(error);
780
+ });
781
+ });
782
+ }
783
+
784
+ private _getDataFromHosted({ layer, serverId, baseProjection }) {
785
+ // 关系型文件
786
+ let isMapService = layer.layerType === 'HOSTED_TILE';
787
+ return new Promise((resolve, reject) => {
788
+ this._checkUploadToRelationship(serverId)
789
+ .then(result => {
790
+ if (result && result.length > 0) {
791
+ let datasetName = result[0].name;
792
+ let featureType = result[0].type.toUpperCase();
793
+ this._getDataService(serverId, datasetName).then(data => {
794
+ let dataItemServices = data.dataItemServices;
795
+ if (dataItemServices.length === 0) {
796
+ reject('noDataServices');
797
+ }
798
+ let param = { layer, dataItemServices, datasetName, featureType, resolve, reject, baseProjection };
799
+ if (isMapService) {
800
+ let dataService = dataItemServices.filter(info => {
801
+ return info && info.serviceType === 'RESTDATA';
802
+ })[0];
803
+ this._isMvt(dataService.address, datasetName, baseProjection)
804
+ .then(info => {
805
+ this._getServiceInfoFromLayer(param, info);
806
+ })
807
+ .catch(() => {
808
+ // 判断失败就走之前逻辑,>数据量用tile
809
+ this._getServiceInfoFromLayer(param);
810
+ });
811
+ } else {
812
+ this._getServiceInfoFromLayer(param);
813
+ }
814
+ });
815
+ } else {
816
+ reject('resultIsEmpty');
817
+ }
818
+ })
819
+ .catch(error => {
820
+ reject(error);
821
+ });
822
+ });
823
+ }
824
+
825
+ private _isMvt(serviceUrl, datasetName, baseProjection) {
826
+ return this._getDatasetsInfo(serviceUrl, datasetName).then(info => {
827
+ // 判断是否和底图坐标系一直
828
+ /* eslint-disable */
829
+ if (info.epsgCode == baseProjection.split('EPSG:')[1]) {
830
+ return SuperMap.FetchRequest.get(`${info.url}/tilefeature.mvt`)
831
+ .then(function (response) {
832
+ return response.json();
833
+ })
834
+ .then(function (result) {
835
+ info.isMvt = result.error && result.error.code === 400;
836
+ return info;
837
+ })
838
+ .catch(() => {
839
+ return info;
840
+ });
841
+ }
842
+ return info;
843
+ });
844
+ }
845
+
846
+ private _getServiceInfoFromLayer(
847
+ { layer, dataItemServices, datasetName, featureType, resolve, reject, baseProjection },
848
+ info?: any
849
+ ) {
850
+ let isMapService = info ? !info.isMvt : layer.layerType === 'HOSTED_TILE';
851
+ let isAdded = false;
852
+ dataItemServices.forEach(service => {
853
+ if (isAdded) {
854
+ return;
855
+ }
856
+ // TODO 对接 MVT
857
+ // 有服务了,就不需要循环
858
+ if (service && isMapService && service.serviceType === 'RESTMAP') {
859
+ isAdded = true;
860
+ // 地图服务,判断使用mvt还是tile
861
+ this._getTileLayerInfo(service.address, baseProjection).then(restMaps => {
862
+ resolve({ type: 'restMap', restMaps });
863
+ });
864
+ } else if (service && !isMapService && service.serviceType === 'RESTDATA') {
865
+ if (info && info.isMvt) {
866
+ // this._addVectorLayer(info, layer, featureType);
867
+ resolve({ type: 'mvt', info, featureType });
868
+ } else {
869
+ // 数据服务
870
+ isAdded = true;
871
+ // 关系型文件发布的数据服务
872
+ this._getDatasources(service.address).then(
873
+ datasourceName => {
874
+ layer.dataSource.dataSourceName = datasourceName + ':' + datasetName;
875
+ layer.dataSource.url = `${service.address}/data`;
876
+ this._getFeatureBySQL(
877
+ layer.dataSource.url,
878
+ [layer.dataSource.dataSourceName || layer.name],
879
+ result => {
880
+ let features = this.parseGeoJsonData2Feature({
881
+ allDatas: {
882
+ features: result.result.features.features
883
+ }
884
+ });
885
+ resolve({ type: 'feature', features });
886
+ },
887
+ err => {
888
+ reject(err);
889
+ }
890
+ );
891
+ },
892
+ err => {
893
+ reject(err);
894
+ }
895
+ );
896
+ }
897
+ }
898
+ }, this);
899
+ if (!isAdded) {
900
+ // 循环完成了,也没有找到合适的服务。有可能服务被删除
901
+ reject('noService');
902
+ }
903
+ }
904
+
905
+ private _getDatasetsInfo(serviceUrl, datasetName) {
906
+ return this._getDatasources(serviceUrl).then(datasourceName => {
907
+ // 判断mvt服务是否可用
908
+ let url = `${serviceUrl}/data/datasources/${datasourceName}/datasets/${datasetName}`;
909
+ const proxy = this.handleProxy();
910
+ url = this.handleParentRes(url);
911
+ return SuperMap.FetchRequest.get(url, null, {
912
+ withCredentials: this.handleWithCredentials(proxy, url, false),
913
+ proxy
914
+ })
915
+ .then(response => {
916
+ return response.json();
917
+ })
918
+ .then(datasetsInfo => {
919
+ return {
920
+ epsgCode: datasetsInfo.datasetInfo.prjCoordSys.epsgCode,
921
+ bounds: datasetsInfo.datasetInfo.bounds,
922
+ datasourceName,
923
+ datasetName,
924
+ url // 返回的是原始url,没有代理。因为用于请求mvt
925
+ };
926
+ });
927
+ });
928
+ }
929
+
930
+ private _getDatasources(url) {
931
+ const proxy = this.handleProxy();
932
+ let serviceUrl = `${url}/data/datasources.json`;
933
+ serviceUrl = this.handleParentRes(serviceUrl);
934
+ return SuperMap.FetchRequest.get(serviceUrl, null, {
935
+ withCredentials: this.handleWithCredentials(proxy, serviceUrl, false),
936
+ proxy
937
+ })
938
+ .then(response => {
939
+ return response.json();
940
+ })
941
+ .then(datasource => {
942
+ if (datasource.code === 401) {
943
+ throw Error(datasource.errorMsg);
944
+ }
945
+ let datasourceNames = datasource.datasourceNames;
946
+ return datasourceNames[0];
947
+ });
948
+ }
949
+
950
+ private _getDataService(fileId, datasetName) {
951
+ const proxy = this.handleProxy();
952
+ let serviceUrl = `${this.serverUrl}web/datas/${fileId}.json`;
953
+ serviceUrl = this.handleParentRes(serviceUrl);
954
+ return SuperMap.FetchRequest.get(serviceUrl, null, {
955
+ withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
956
+ proxy
957
+ })
958
+ .then(response => {
959
+ return response.json();
960
+ })
961
+ .then(result => {
962
+ result.fileId = fileId;
963
+ result.datasetName = datasetName;
964
+ return result;
965
+ });
966
+ }
967
+
968
+ private _checkUploadToRelationship(fileId) {
969
+ const proxy = this.handleProxy();
970
+ let serviceUrl = `${this.serverUrl}web/datas/${fileId}/datasets.json`;
971
+ serviceUrl = this.handleParentRes(serviceUrl);
972
+ return SuperMap.FetchRequest.get(serviceUrl, null, {
973
+ withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
974
+ proxy
975
+ })
976
+ .then(response => {
977
+ return response.json();
978
+ })
979
+ .then(result => {
980
+ return result;
981
+ });
982
+ }
983
+
984
+ private _handleMapUrl() {
985
+ let mapUrl = this.serverUrl + 'web/maps/' + this.mapId + '/map';
986
+ if (this.accessToken || this.accessKey) {
987
+ mapUrl += '?' + (this.accessToken && !this.accessKey) ? 'token=' + this.accessToken : 'key=' + this.accessKey;
988
+ }
989
+ let filter = 'getUrlResource.json?url=';
990
+ if (this.excludePortalProxyUrl && this.serverUrl.indexOf(filter) > -1) {
991
+ // 大屏需求,或者有加上代理的
992
+ let urlArray = this.serverUrl.split(filter);
993
+ if (urlArray.length > 1) {
994
+ mapUrl = urlArray[0] + filter + this.serverUrl + 'web/maps/' + this.mapId + '/map.json';
995
+ }
996
+ }
997
+ mapUrl = mapUrl.indexOf('.json') === -1 ? `${mapUrl}.json` : mapUrl;
998
+ return mapUrl;
999
+ }
1000
+
1001
+ public handleProxy(type?: string): string {
1002
+ if (!this.proxy) {
1003
+ return null;
1004
+ }
1005
+ const proxySuffix: string = this.proxyOptions[type || 'data'];
1006
+ let proxy: string = this.serverUrl + proxySuffix;
1007
+ if (typeof this.proxy === 'string') {
1008
+ proxy = this.proxy;
1009
+ }
1010
+ return proxy;
1011
+ }
1012
+
1013
+ public handleWithCredentials(proxyUrl?: string, serviceUrl?: string, defaultValue = this.withCredentials): boolean | string {
1014
+ if (serviceUrl?.includes('https://www.supermapol.com')) {
1015
+ return '';
1016
+ }
1017
+ if (proxyUrl && proxyUrl.startsWith(this.serverUrl) && (!serviceUrl || serviceUrl.startsWith(proxyUrl))) {
1018
+ return true;
1019
+ }
1020
+ if (serviceUrl && this.iportalServiceProxyUrl && serviceUrl.indexOf(this.iportalServiceProxyUrl) >= 0) {
1021
+ return true;
1022
+ }
1023
+
1024
+ return defaultValue;
1025
+ }
1026
+
1027
+ public isIportalResourceUrl(serviceUrl) {
1028
+ return (
1029
+ serviceUrl.startsWith(this.serverUrl) ||
1030
+ (this.iportalServiceProxyUrl && serviceUrl.indexOf(this.iportalServiceProxyUrl) >= 0)
1031
+ );
1032
+ }
1033
+
1034
+ public handleParentRes(url, parentResId = this.mapId, parentResType = 'MAP'): string {
1035
+ if (!this.isIportalResourceUrl(url)) {
1036
+ return url;
1037
+ }
1038
+ return urlAppend(url, `parentResType=${parentResType}&parentResId=${parentResId}`);
1039
+ }
1040
+
1041
+ private _formatGeoJSON(data): any {
1042
+ let features = data.features;
1043
+ features.forEach((row, index) => {
1044
+ row.properties['index'] = index;
1045
+ });
1046
+ return features;
1047
+ }
1048
+
1049
+ private _excelData2Feature(dataContent: any, xyField: any = {}): any {
1050
+ let fieldCaptions = dataContent.colTitles;
1051
+ // 位置属性处理
1052
+ let xfieldIndex = fieldCaptions.indexOf(xyField.xField);
1053
+ let yfieldIndex = fieldCaptions.indexOf(xyField.yField);
1054
+ if (yfieldIndex < 0 || xfieldIndex < 0) {
1055
+ for (let i = 0, len = fieldCaptions.length; i < len; i++) {
1056
+ if (isXField(fieldCaptions[i])) {
1057
+ xfieldIndex = i;
1058
+ }
1059
+ if (isYField(fieldCaptions[i])) {
1060
+ yfieldIndex = i;
1061
+ }
1062
+ }
1063
+ }
1064
+
1065
+ // feature 构建后期支持坐标系 4326/3857
1066
+ let features = [];
1067
+
1068
+ for (let i = 0, len = dataContent.rows.length; i < len; i++) {
1069
+ let row = dataContent.rows[i];
1070
+
1071
+ let x = Number(row[xfieldIndex]);
1072
+ let y = Number(row[yfieldIndex]);
1073
+
1074
+ if (isNaN(x) || isNaN(y)) {
1075
+ continue;
1076
+ }
1077
+
1078
+ // 属性信息
1079
+ let attributes = {};
1080
+ for (let index = 0; index < dataContent.colTitles.length; index++) {
1081
+ const element = dataContent.colTitles[index].trim();
1082
+ attributes[element] = dataContent.rows[i][index];
1083
+ }
1084
+ attributes['index'] = i + '';
1085
+ // 目前csv 只支持处理点,所以先生成点类型的 geojson
1086
+ let feature = {
1087
+ type: 'Feature',
1088
+ geometry: {
1089
+ type: 'Point',
1090
+ coordinates: [x, y]
1091
+ },
1092
+ properties: attributes
1093
+ };
1094
+ features.push(feature);
1095
+ }
1096
+ return features;
1097
+ }
1098
+
1099
+ private _excelData2FeatureByDivision(content: any, divisionType: string, divisionField: string): Promise<Object> {
1100
+ const dataName = ['城市', 'City'].includes(divisionType) ? 'MunicipalData' : 'ProvinceData';
1101
+ if (window[dataName] && window[dataName].features) {
1102
+ return new Promise(resolve => {
1103
+ resolve(this._combineFeature(content, window[dataName], divisionField));
1104
+ });
1105
+ }
1106
+ const dataFileName = ['城市', 'City'].includes(divisionType) ? 'MunicipalData.js' : 'ProvincialData.js';
1107
+ const proxy = this.handleProxy();
1108
+ const dataUrl = `${this.serverUrl}apps/dataviz/libs/administrative_data/${dataFileName}`;
1109
+ return SuperMap.FetchRequest.get(dataUrl, null, {
1110
+ withCredentials: false,
1111
+ proxy,
1112
+ withoutFormatSuffix: true
1113
+ })
1114
+ .then(response => {
1115
+ return response.text();
1116
+ })
1117
+ .then(result => {
1118
+ new Function(result)();
1119
+ return this._combineFeature(content, window[dataName], divisionField);
1120
+ });
1121
+ }
1122
+
1123
+ private _combineFeature(
1124
+ properties: any,
1125
+ geoData: GeoJSON.FeatureCollection,
1126
+ divisionField: string
1127
+ ): GeoJSON.FeatureCollection {
1128
+ let geojson: GeoJSON.FeatureCollection = {
1129
+ type: 'FeatureCollection',
1130
+ features: []
1131
+ };
1132
+ if (properties.length < 2) {
1133
+ return geojson;
1134
+ } // 只有一行数据时为标题
1135
+ let titles = properties.colTitles;
1136
+ let rows = properties.rows;
1137
+ let fieldIndex = titles.findIndex(title => title === divisionField);
1138
+ rows.forEach(row => {
1139
+ let feature = geoData.features.find(item => {
1140
+ return this._isMatchAdministrativeName(item.properties.Name, row[fieldIndex]);
1141
+ });
1142
+ // todo 需提示忽略无效数据
1143
+ if (feature) {
1144
+ const province = feature.properties.Province;
1145
+ const combineFeature: GeoJSON.Feature = { properties: {}, geometry: feature.geometry, type: 'Feature' };
1146
+ row.forEach((item, idx) => {
1147
+ combineFeature.properties[titles[idx]] = item;
1148
+ });
1149
+ if (province) {
1150
+ combineFeature.properties.Province = province;
1151
+ }
1152
+ geojson.features.push(combineFeature);
1153
+ }
1154
+ });
1155
+ return geojson;
1156
+ }
1157
+
1158
+ /**
1159
+ * @description 行政区划原始数据和当前数据是否匹配
1160
+ */
1161
+ private _isMatchAdministrativeName(featureName: string, fieldName: string): boolean {
1162
+ if (featureName && typeof fieldName === 'string' && fieldName.constructor === String) {
1163
+ let shortName = featureName.trim().substr(0, 2);
1164
+ // 张家口市和张家界市
1165
+ if (shortName === '张家') {
1166
+ shortName = featureName.trim().substr(0, 3);
1167
+ }
1168
+ // 阿拉善盟 阿拉尔市
1169
+ if (shortName === '阿拉') {
1170
+ shortName = featureName.trim().substr(0, 3);
1171
+ }
1172
+ return !!fieldName.match(new RegExp(shortName));
1173
+ }
1174
+ return false;
1175
+ }
1176
+
1177
+ private _getTileLayerInfo(url, baseProjection) {
1178
+ const proxy = this.handleProxy();
1179
+ let epsgCode = baseProjection.split('EPSG:')[1];
1180
+ let serviceUrl = `${url}/maps.json`;
1181
+ serviceUrl = this.handleParentRes(serviceUrl);
1182
+ return SuperMap.FetchRequest.get(serviceUrl, null, {
1183
+ withCredentials: this.handleWithCredentials(proxy, serviceUrl, this.withCredentials),
1184
+ proxy
1185
+ })
1186
+ .then(response => {
1187
+ return response.json();
1188
+ })
1189
+ .then(mapInfo => {
1190
+ let promises = [];
1191
+ if (mapInfo) {
1192
+ mapInfo.forEach(info => {
1193
+ let promise = SuperMap.FetchRequest.get(
1194
+ `${info.path}.json?prjCoordSys=${JSON.stringify({ epsgCode: epsgCode })}`,
1195
+ null,
1196
+ {
1197
+ withCredentials: this.withCredentials,
1198
+ proxy
1199
+ }
1200
+ )
1201
+ .then(response => {
1202
+ return response.json();
1203
+ })
1204
+ .then(restMapInfo => {
1205
+ restMapInfo.url = info.path;
1206
+ return restMapInfo;
1207
+ });
1208
+ promises.push(promise);
1209
+ });
1210
+ }
1211
+ return Promise.all(promises).then(allRestMaps => {
1212
+ return allRestMaps;
1213
+ });
1214
+ });
1215
+ }
1216
+
1217
+ private _getFeatureBySQL(
1218
+ url: string,
1219
+ datasetNames: Array<string>,
1220
+ processCompleted: Function,
1221
+ processFaild: Function,
1222
+ baseProjection?
1223
+ ): void {
1224
+ let getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;
1225
+ getFeatureParam = new SuperMap.FilterParameter({
1226
+ name: datasetNames.join().replace(':', '@'),
1227
+ attributeFilter: null
1228
+ });
1229
+ getFeatureBySQLParams = new SuperMap.GetFeaturesBySQLParameters({
1230
+ queryParameter: getFeatureParam,
1231
+ datasetNames: datasetNames,
1232
+ fromIndex: 0,
1233
+ toIndex: -1,
1234
+ maxFeatures: -1,
1235
+ returnContent: true
1236
+ });
1237
+ if (baseProjection) {
1238
+ if (baseProjection === 'EPSG:3857' || baseProjection === 'EPSG:-1000') {
1239
+ getFeatureBySQLParams.targetEpsgCode = 4326;
1240
+ } else {
1241
+ getFeatureBySQLParams.targetEpsgCode = +baseProjection.split(':')[1];
1242
+ }
1243
+ }
1244
+ const proxy = this.handleProxy();
1245
+ let options = {
1246
+ proxy,
1247
+ withCredentials: this.handleWithCredentials(proxy, url, false),
1248
+ eventListeners: {
1249
+ processCompleted: getFeaturesEventArgs => {
1250
+ let result = getFeaturesEventArgs.result;
1251
+ if(result && result.datasetInfos) {
1252
+ let fields = []; let fieldCaptions = []; let fieldTypes = [];
1253
+ const fieldInfos = result.datasetInfos[0].fieldInfos;
1254
+ fieldInfos.forEach(fieldInfo => {
1255
+ if(fieldInfo.name) {
1256
+ fields.push(fieldInfo.name.toUpperCase());
1257
+ fieldCaptions.push(fieldInfo.caption.toUpperCase());
1258
+ fieldTypes.push(fieldInfo.type);
1259
+ }
1260
+ });
1261
+ let data = statisticsFeatures(result.features.features, fields, fieldCaptions, fieldTypes);
1262
+ getFeaturesEventArgs.result.features.features = data.features;
1263
+ }
1264
+ processCompleted && processCompleted(getFeaturesEventArgs);
1265
+ },
1266
+ processFailed: e => {
1267
+ processFaild && processFaild(e);
1268
+ }
1269
+ }
1270
+ };
1271
+ const serviceUrl = this.handleParentRes(url);
1272
+ getFeatureBySQLService = new SuperMap.GetFeaturesBySQLService(serviceUrl, options);
1273
+ getFeatureBySQLService.processAsync(getFeatureBySQLParams);
1274
+ }
1275
+
1276
+ public async getEpsgCodeInfo(epsgCode, iPortalUrl) {
1277
+ const url = iPortalUrl.slice(-1) === '/' ? iPortalUrl : `${iPortalUrl}/`;
1278
+ let codeUrl = `${url}epsgcodes/${epsgCode}.json`;
1279
+ const wkt = await SuperMap.FetchRequest.get(codeUrl, null)
1280
+ .then(response => {
1281
+ return response.json();
1282
+ })
1283
+ .then(epsgcodeInfo => {
1284
+ return epsgcodeInfo.wkt;
1285
+ })
1286
+ .catch(err => {
1287
+ console.error(err);
1288
+ return undefined;
1289
+ });
1290
+ return wkt;
1291
+ }
1292
+ }