csk-gis-frame-work 4.0.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 (636) hide show
  1. package/baseSetting/config/mapConfig.js +48 -0
  2. package/baseSetting/gis-data/examples-data/3DTile/Tileset/tileset.json +124 -0
  3. package/baseSetting/gis-data/examples-data/client-analysis/buffer-hash-4.json +1 -0
  4. package/baseSetting/gis-data/examples-data/client-analysis/point.json +47 -0
  5. package/baseSetting/gis-data/examples-data/echarts/griddata.js +3 -0
  6. package/baseSetting/gis-data/examples-data/echarts/line-bus.json +1 -0
  7. package/baseSetting/gis-data/examples-data/echarts/weibo.geojson +1 -0
  8. package/baseSetting/gis-data/examples-data/echarts/weibo.json +1 -0
  9. package/baseSetting/gis-data/examples-data/echartsgl/beijing/buildings.xml +1 -0
  10. package/baseSetting/gis-data/examples-data/echartsgl/newyork/buildings.json +17178 -0
  11. package/baseSetting/gis-data/examples-data/echartsgl/shenzhen//346/267/261/345/234/263/350/275/250/350/277/271/347/272/277.json +24 -0
  12. package/baseSetting/gis-data/examples-data/echartsgl/shenzhen//351/201/223/350/267/25703.json +1949 -0
  13. package/baseSetting/gis-data/examples-data/geojson/animate-marker.json +15007 -0
  14. package/baseSetting/gis-data/examples-data/geojson/arc.js +256 -0
  15. package/baseSetting/gis-data/examples-data/geojson/chiacgo_bounds.geojson +9 -0
  16. package/baseSetting/gis-data/examples-data/geojson/china-city.geojson +355 -0
  17. package/baseSetting/gis-data/examples-data/geojson/china-xian.geojson +2428 -0
  18. package/baseSetting/gis-data/examples-data/geojson/china.geojson +42 -0
  19. package/baseSetting/gis-data/examples-data/geojson/countries.geojson +181 -0
  20. package/baseSetting/gis-data/examples-data/geojson/line-string.json +1020 -0
  21. package/baseSetting/gis-data/examples-data/geojson/washington_bounds.geojson +6 -0
  22. package/baseSetting/gis-data/examples-data/geojson/washington_point.geojson +153 -0
  23. package/baseSetting/gis-data/examples-data/geojson/wuhan_bounds.geojson +29 -0
  24. package/baseSetting/gis-data/examples-data/kml/Earthquake_2012.js +203 -0
  25. package/baseSetting/gis-data/examples-data/kml/KML_Samples.kml +915 -0
  26. package/baseSetting/gis-data/examples-data/mapbox/changestyle.json +2980 -0
  27. package/baseSetting/gis-data/examples-data/mapbox/sprite.json +3634 -0
  28. package/baseSetting/gis-data/examples-data/mapv/china-point.geojson +2 -0
  29. package/baseSetting/gis-data/examples-data/mapv/china-point.json +2 -0
  30. package/baseSetting/gis-data/examples-data/mapv/china.geojson +40 -0
  31. package/baseSetting/gis-data/examples-data/mapv/china.json +40 -0
  32. package/baseSetting/gis-data/examples-data/model/Airplane/Airplane.dae +333 -0
  33. package/baseSetting/gis-data/examples-data/model/Airplane/Airplane.gltf +802 -0
  34. package/baseSetting/gis-data/examples-data/model/fireExtinguisher.gltf +455 -0
  35. package/baseSetting/gis-data/sources_layers.js +2002 -0
  36. package/baseSetting/images/map/done.png +0 -0
  37. package/baseSetting/images/map/error.png +0 -0
  38. package/baseSetting/images/map/invalid.png +0 -0
  39. package/baseSetting/images/map/map.png +0 -0
  40. package/baseSetting/images/map/point.png +0 -0
  41. package/baseSetting/images/map/todo.png +0 -0
  42. package/baseSetting/style/DevMapConfig.js +33 -0
  43. package/baseSetting/style/getDefaultFonts.py +23 -0
  44. package/baseSetting/utils/TokenUtils.js +15 -0
  45. package/index.js +42 -0
  46. package/mapboxgl/js/common/AnnotationLayer.js +341 -0
  47. package/mapboxgl/js/common/BoundaryLayer.js +271 -0
  48. package/mapboxgl/js/common/ClusterLayer.js +498 -0
  49. package/mapboxgl/js/common/FlowLayer.js +234 -0
  50. package/mapboxgl/js/common/FlowingLayer.js +325 -0
  51. package/mapboxgl/js/common/HeatmapLayer.js +280 -0
  52. package/mapboxgl/js/common/ILayer.js +89 -0
  53. package/mapboxgl/js/common/LocationLayer.js +791 -0
  54. package/mapboxgl/js/common/PulserLayer.js +244 -0
  55. package/mapboxgl/js/common/SelectionLayer.js +315 -0
  56. package/mapboxgl/js/common/SimpleCircleLayer.js +465 -0
  57. package/mapboxgl/js/common/SimpleFillLayer.js +475 -0
  58. package/mapboxgl/js/common/SimpleLineLayer.js +430 -0
  59. package/mapboxgl/js/common/SimpleMarkerLayer.js +468 -0
  60. package/mapboxgl/js/common/StatsCircleLayer.js +351 -0
  61. package/mapboxgl/js/common/TrackingLayer.js +845 -0
  62. package/mapboxgl/js/common/VideoClusterLayer.js +539 -0
  63. package/mapboxgl/js/common/VideoLayer.js +334 -0
  64. package/mapboxgl/js/drainer/DrainEntityAnalystProvider.js +550 -0
  65. package/mapboxgl/js/drainer/DrainEntityProvider.js +557 -0
  66. package/mapboxgl/js/drainer/DrainEntityStatsLayer.js +144 -0
  67. package/mapboxgl/js/drainer/DrainUnitLayer.js +130 -0
  68. package/mapboxgl/js/drainer/DrainageEntityLayer.js +145 -0
  69. package/mapboxgl/js/drainer/DrainageEntityProvider.js +222 -0
  70. package/mapboxgl/js/drainer/DrainageUnitFlowLayer.js +137 -0
  71. package/mapboxgl/js/drainer/DrainageUnitlineLayer.js +154 -0
  72. package/mapboxgl/js/drainer/DrainageUnitlineProvider.js +140 -0
  73. package/mapboxgl/js/drainer/DrainerSearchProvider.js +274 -0
  74. package/mapboxgl/js/draw/CircleDrawing.js +238 -0
  75. package/mapboxgl/js/draw/DrawingProvider.js +533 -0
  76. package/mapboxgl/js/draw/DynamicBuffer.js +220 -0
  77. package/mapboxgl/js/draw/PointDrawing.js +189 -0
  78. package/mapboxgl/js/draw/PolygonDrawing.js +538 -0
  79. package/mapboxgl/js/draw/PolylineDrawing.js +597 -0
  80. package/mapboxgl/js/draw/RectangleDrawing.js +217 -0
  81. package/mapboxgl/js/draw/SplitPoylgon.js +214 -0
  82. package/mapboxgl/js/draw/mapConfig.js +240 -0
  83. package/mapboxgl/js/dynamic/BuildingsiteLayer.js +179 -0
  84. package/mapboxgl/js/dynamic/BusinessProvider.js +547 -0
  85. package/mapboxgl/js/dynamic/DefectLayer.js +137 -0
  86. package/mapboxgl/js/dynamic/EventLayer.js +151 -0
  87. package/mapboxgl/js/dynamic/StaffLayer.js +233 -0
  88. package/mapboxgl/js/dynamic/StoreLayer.js +143 -0
  89. package/mapboxgl/js/dynamic/VehicleLayer.js +236 -0
  90. package/mapboxgl/js/dynamic/WorkorderLayer.js +110 -0
  91. package/mapboxgl/js/editor/DeleteMarkerLayer.js +184 -0
  92. package/mapboxgl/js/editor/EditorProvider.js +2270 -0
  93. package/mapboxgl/js/editor/SurveyProvider.js +253 -0
  94. package/mapboxgl/js/equipment/AlarmLayer.js +117 -0
  95. package/mapboxgl/js/equipment/EquipCODLayer.js +119 -0
  96. package/mapboxgl/js/equipment/EquipDoorLayer.js +119 -0
  97. package/mapboxgl/js/equipment/EquipFloodedLayer.js +118 -0
  98. package/mapboxgl/js/equipment/EquipFlowLayer.js +119 -0
  99. package/mapboxgl/js/equipment/EquipFlowingLayer.js +103 -0
  100. package/mapboxgl/js/equipment/EquipLiquidLayer.js +121 -0
  101. package/mapboxgl/js/equipment/EquipNh3Layer.js +119 -0
  102. package/mapboxgl/js/equipment/EquipOtherLayer.js +123 -0
  103. package/mapboxgl/js/equipment/EquipPumpLayer.js +119 -0
  104. package/mapboxgl/js/equipment/EquipRaingaugeLayer.js +116 -0
  105. package/mapboxgl/js/equipment/EquipSpeedLayer.js +119 -0
  106. package/mapboxgl/js/equipment/EquipWellLayer.js +119 -0
  107. package/mapboxgl/js/equipment/EquipmentLayer.js +116 -0
  108. package/mapboxgl/js/equipment/EquipmentProvider.js +545 -0
  109. package/mapboxgl/js/equipment/EquippHLayer.js +119 -0
  110. package/mapboxgl/js/equipment/OverflowLayer.js +167 -0
  111. package/mapboxgl/js/equipment/WarnLayer.js +120 -0
  112. package/mapboxgl/js/event/EventBranchPipeLayer.js +108 -0
  113. package/mapboxgl/js/event/EventDefectLayer.js +119 -0
  114. package/mapboxgl/js/event/EventDrainerLayer.js +119 -0
  115. package/mapboxgl/js/event/EventLayer.js +123 -0
  116. package/mapboxgl/js/event/EventMixLayer.js +119 -0
  117. package/mapboxgl/js/event/EventOtherLayer.js +119 -0
  118. package/mapboxgl/js/event/EventOtherWaterLayer.js +109 -0
  119. package/mapboxgl/js/event/EventPolicyWaterLayer.js +119 -0
  120. package/mapboxgl/js/event/EventPourLayer.js +119 -0
  121. package/mapboxgl/js/event/EventProvider.js +426 -0
  122. package/mapboxgl/js/event/EventWaterLayer.js +108 -0
  123. package/mapboxgl/js/facility/DitchLayer.js +171 -0
  124. package/mapboxgl/js/facility/FacilityProvider.js +523 -0
  125. package/mapboxgl/js/facility/FlapLayer.js +196 -0
  126. package/mapboxgl/js/facility/GateLayer.js +166 -0
  127. package/mapboxgl/js/facility/InterceptionLayer.js +166 -0
  128. package/mapboxgl/js/facility/InterceptionsewLayer.js +166 -0
  129. package/mapboxgl/js/facility/OutfallLayer.js +166 -0
  130. package/mapboxgl/js/facility/PatrolareaLayer.js +177 -0
  131. package/mapboxgl/js/facility/RaininletLayer.js +166 -0
  132. package/mapboxgl/js/facility/StorageLayer.js +166 -0
  133. package/mapboxgl/js/geog/AreaBoundaryProvider.js +282 -0
  134. package/mapboxgl/js/geog/BoundaryProvider.js +266 -0
  135. package/mapboxgl/js/geog/GMLProvider.js +146 -0
  136. package/mapboxgl/js/geog/GeoJsonProvider.js +336 -0
  137. package/mapboxgl/js/geog/IconProvider.js +481 -0
  138. package/mapboxgl/js/geog/IndexedDBProvider.js +467 -0
  139. package/mapboxgl/js/geog/LayerProvider.js +275 -0
  140. package/mapboxgl/js/geog/LocationProvider.js +227 -0
  141. package/mapboxgl/js/geog/MapProvider.js +179 -0
  142. package/mapboxgl/js/geog/SelectionProvider.js +99 -0
  143. package/mapboxgl/js/geog/WKTProvider.js +180 -0
  144. package/mapboxgl/js/layers/CircleLayer.js +471 -0
  145. package/mapboxgl/js/layers/ClusterLayer.js +529 -0
  146. package/mapboxgl/js/layers/FillLayer.js +407 -0
  147. package/mapboxgl/js/layers/FlowingLayer.js +315 -0
  148. package/mapboxgl/js/layers/HeatmapLayer.js +263 -0
  149. package/mapboxgl/js/layers/IconClusterLayer.js +497 -0
  150. package/mapboxgl/js/layers/LineLayer.js +442 -0
  151. package/mapboxgl/js/layers/MarkerLayer.js +504 -0
  152. package/mapboxgl/js/layers/Pulser.js +84 -0
  153. package/mapboxgl/js/layers/PulserLayer.js +161 -0
  154. package/mapboxgl/js/layers/TextLayer.js +352 -0
  155. package/mapboxgl/js/pipe/BufferLayer.js +142 -0
  156. package/mapboxgl/js/pipe/DrainageAreaLayer.js +272 -0
  157. package/mapboxgl/js/pipe/DrainageAreaProvider.js +823 -0
  158. package/mapboxgl/js/pipe/DrainagePointLayer.js +258 -0
  159. package/mapboxgl/js/pipe/LayerManagerProvider.js +1499 -0
  160. package/mapboxgl/js/pipe/MapQueryProvider.js +879 -0
  161. package/mapboxgl/js/pipe/QueryResultsLayer.js +799 -0
  162. package/mapboxgl/js/pipeline/ConnholeLayer.js +134 -0
  163. package/mapboxgl/js/pipeline/LabelLayer.js +310 -0
  164. package/mapboxgl/js/pipeline/ManholeLayer.js +563 -0
  165. package/mapboxgl/js/pipeline/PipeflowLayer.js +490 -0
  166. package/mapboxgl/js/pipeline/PipelineErrorLayer.js +180 -0
  167. package/mapboxgl/js/pipeline/PipelineFlowLayer.js +213 -0
  168. package/mapboxgl/js/pipeline/PipelineLayer.js +509 -0
  169. package/mapboxgl/js/pipeline/PipenetErrorProvider.js +352 -0
  170. package/mapboxgl/js/pipeline/PipenetFaultProvider.js +219 -0
  171. package/mapboxgl/js/pipeline/PipenetInProvider.js +514 -0
  172. package/mapboxgl/js/pipeline/PipenetMixingFlowLayer.js +329 -0
  173. package/mapboxgl/js/pipeline/PipenetMixingLayer.js +155 -0
  174. package/mapboxgl/js/pipeline/PipenetMixingProvider.js +163 -0
  175. package/mapboxgl/js/pipeline/PipenetProvider.js +1042 -0
  176. package/mapboxgl/js/pipenet/PipenetAnalystProvider.js +393 -0
  177. package/mapboxgl/js/pipenet/PipenetConnectivityProvider.js +166 -0
  178. package/mapboxgl/js/pipenet/PipenetDownstreamProvider.js +276 -0
  179. package/mapboxgl/js/pipenet/PipenetFlowingLayer.js +312 -0
  180. package/mapboxgl/js/pipenet/PipenetServiceRangeProvider.js +386 -0
  181. package/mapboxgl/js/pipenet/PipenetUpdownstreamProvider.js +507 -0
  182. package/mapboxgl/js/pipenet/PipenetUpstreamProvider.js +311 -0
  183. package/mapboxgl/js/pipenet/PipenetWhereaboutsProvider.js +342 -0
  184. package/mapboxgl/js/plant/FlylineLayer.js +304 -0
  185. package/mapboxgl/js/plant/PlantLayer.js +166 -0
  186. package/mapboxgl/js/plant/PlantPumpProvider.js +788 -0
  187. package/mapboxgl/js/plant/PumpLayer.js +166 -0
  188. package/mapboxgl/js/plant/RuralSewageLayer.js +166 -0
  189. package/mapboxgl/js/plant/ServiceRangeLayer.js +130 -0
  190. package/mapboxgl/js/plant/VideoProvider.js +145 -0
  191. package/mapboxgl/js/three/ThreeGltfProvider.js +245 -0
  192. package/mapboxgl/js/utils/CesiumUtils.js +109 -0
  193. package/mapboxgl/js/utils/ColorUtils.js +48 -0
  194. package/mapboxgl/js/utils/CommonUtils.js +65 -0
  195. package/mapboxgl/js/utils/DataUtils.js +138 -0
  196. package/mapboxgl/js/utils/GeoJsonUtils.js +357 -0
  197. package/mapboxgl/js/utils/GeogUtils.js +300 -0
  198. package/mapboxgl/js/utils/LayerUtils.js +160 -0
  199. package/mapboxgl/js/utils/MapUtils.js +128 -0
  200. package/mapboxgl/js/utils/NetworkUtils.js +21 -0
  201. package/mapboxgl/js/utils/PipenetUtils.js +100 -0
  202. package/mapboxgl/js/utils/ProjUtils.js +32 -0
  203. package/mapboxgl/js/utils/SpatialRefUtils.js +198 -0
  204. package/mapboxgl/js/utils/SvgUtils.js +133 -0
  205. package/mapboxgl/js/utils/VerifyUtils.js +73 -0
  206. package/mapboxgl/js/widget/Pulser.js +88 -0
  207. package/mapboxgl/style/fonts/Microsoft YaHei/0-255.pbf +0 -0
  208. package/mapboxgl/style/fonts/Microsoft YaHei/1024-1279.pbf +0 -0
  209. package/mapboxgl/style/fonts/Microsoft YaHei/10240-10495.pbf +3 -0
  210. package/mapboxgl/style/fonts/Microsoft YaHei/10496-10751.pbf +3 -0
  211. package/mapboxgl/style/fonts/Microsoft YaHei/10752-11007.pbf +3 -0
  212. package/mapboxgl/style/fonts/Microsoft YaHei/11008-11263.pbf +3 -0
  213. package/mapboxgl/style/fonts/Microsoft YaHei/11264-11519.pbf +3 -0
  214. package/mapboxgl/style/fonts/Microsoft YaHei/11520-11775.pbf +3 -0
  215. package/mapboxgl/style/fonts/Microsoft YaHei/11776-12031.pbf +0 -0
  216. package/mapboxgl/style/fonts/Microsoft YaHei/12032-12287.pbf +3 -0
  217. package/mapboxgl/style/fonts/Microsoft YaHei/12288-12543.pbf +0 -0
  218. package/mapboxgl/style/fonts/Microsoft YaHei/12544-12799.pbf +0 -0
  219. package/mapboxgl/style/fonts/Microsoft YaHei/1280-1535.pbf +3 -0
  220. package/mapboxgl/style/fonts/Microsoft YaHei/12800-13055.pbf +0 -0
  221. package/mapboxgl/style/fonts/Microsoft YaHei/13056-13311.pbf +0 -0
  222. package/mapboxgl/style/fonts/Microsoft YaHei/13312-13567.pbf +0 -0
  223. package/mapboxgl/style/fonts/Microsoft YaHei/13568-13823.pbf +0 -0
  224. package/mapboxgl/style/fonts/Microsoft YaHei/13824-14079.pbf +0 -0
  225. package/mapboxgl/style/fonts/Microsoft YaHei/14080-14335.pbf +0 -0
  226. package/mapboxgl/style/fonts/Microsoft YaHei/14336-14591.pbf +0 -0
  227. package/mapboxgl/style/fonts/Microsoft YaHei/14592-14847.pbf +0 -0
  228. package/mapboxgl/style/fonts/Microsoft YaHei/14848-15103.pbf +0 -0
  229. package/mapboxgl/style/fonts/Microsoft YaHei/15104-15359.pbf +0 -0
  230. package/mapboxgl/style/fonts/Microsoft YaHei/1536-1791.pbf +3 -0
  231. package/mapboxgl/style/fonts/Microsoft YaHei/15360-15615.pbf +0 -0
  232. package/mapboxgl/style/fonts/Microsoft YaHei/15616-15871.pbf +0 -0
  233. package/mapboxgl/style/fonts/Microsoft YaHei/15872-16127.pbf +0 -0
  234. package/mapboxgl/style/fonts/Microsoft YaHei/16128-16383.pbf +0 -0
  235. package/mapboxgl/style/fonts/Microsoft YaHei/16384-16639.pbf +0 -0
  236. package/mapboxgl/style/fonts/Microsoft YaHei/16640-16895.pbf +0 -0
  237. package/mapboxgl/style/fonts/Microsoft YaHei/16896-17151.pbf +0 -0
  238. package/mapboxgl/style/fonts/Microsoft YaHei/17152-17407.pbf +0 -0
  239. package/mapboxgl/style/fonts/Microsoft YaHei/17408-17663.pbf +0 -0
  240. package/mapboxgl/style/fonts/Microsoft YaHei/17664-17919.pbf +0 -0
  241. package/mapboxgl/style/fonts/Microsoft YaHei/1792-2047.pbf +3 -0
  242. package/mapboxgl/style/fonts/Microsoft YaHei/17920-18175.pbf +0 -0
  243. package/mapboxgl/style/fonts/Microsoft YaHei/18176-18431.pbf +0 -0
  244. package/mapboxgl/style/fonts/Microsoft YaHei/18432-18687.pbf +0 -0
  245. package/mapboxgl/style/fonts/Microsoft YaHei/18688-18943.pbf +0 -0
  246. package/mapboxgl/style/fonts/Microsoft YaHei/18944-19199.pbf +0 -0
  247. package/mapboxgl/style/fonts/Microsoft YaHei/19200-19455.pbf +0 -0
  248. package/mapboxgl/style/fonts/Microsoft YaHei/19456-19711.pbf +0 -0
  249. package/mapboxgl/style/fonts/Microsoft YaHei/19712-19967.pbf +0 -0
  250. package/mapboxgl/style/fonts/Microsoft YaHei/19968-20223.pbf +0 -0
  251. package/mapboxgl/style/fonts/Microsoft YaHei/20224-20479.pbf +0 -0
  252. package/mapboxgl/style/fonts/Microsoft YaHei/2048-2303.pbf +3 -0
  253. package/mapboxgl/style/fonts/Microsoft YaHei/20480-20735.pbf +0 -0
  254. package/mapboxgl/style/fonts/Microsoft YaHei/20736-20991.pbf +0 -0
  255. package/mapboxgl/style/fonts/Microsoft YaHei/20992-21247.pbf +0 -0
  256. package/mapboxgl/style/fonts/Microsoft YaHei/21248-21503.pbf +0 -0
  257. package/mapboxgl/style/fonts/Microsoft YaHei/21504-21759.pbf +0 -0
  258. package/mapboxgl/style/fonts/Microsoft YaHei/21760-22015.pbf +0 -0
  259. package/mapboxgl/style/fonts/Microsoft YaHei/22016-22271.pbf +0 -0
  260. package/mapboxgl/style/fonts/Microsoft YaHei/22272-22527.pbf +154 -9
  261. package/mapboxgl/style/fonts/Microsoft YaHei/22528-22783.pbf +0 -0
  262. package/mapboxgl/style/fonts/Microsoft YaHei/22784-23039.pbf +0 -0
  263. package/mapboxgl/style/fonts/Microsoft YaHei/2304-2559.pbf +3 -0
  264. package/mapboxgl/style/fonts/Microsoft YaHei/23040-23295.pbf +0 -0
  265. package/mapboxgl/style/fonts/Microsoft YaHei/23296-23551.pbf +0 -0
  266. package/mapboxgl/style/fonts/Microsoft YaHei/23552-23807.pbf +0 -0
  267. package/mapboxgl/style/fonts/Microsoft YaHei/23808-24063.pbf +0 -0
  268. package/mapboxgl/style/fonts/Microsoft YaHei/24064-24319.pbf +0 -0
  269. package/mapboxgl/style/fonts/Microsoft YaHei/24320-24575.pbf +0 -0
  270. package/mapboxgl/style/fonts/Microsoft YaHei/24576-24831.pbf +0 -0
  271. package/mapboxgl/style/fonts/Microsoft YaHei/24832-25087.pbf +0 -0
  272. package/mapboxgl/style/fonts/Microsoft YaHei/25088-25343.pbf +0 -0
  273. package/mapboxgl/style/fonts/Microsoft YaHei/25344-25599.pbf +0 -0
  274. package/mapboxgl/style/fonts/Microsoft YaHei/256-511.pbf +0 -0
  275. package/mapboxgl/style/fonts/Microsoft YaHei/2560-2815.pbf +3 -0
  276. package/mapboxgl/style/fonts/Microsoft YaHei/25600-25855.pbf +0 -0
  277. package/mapboxgl/style/fonts/Microsoft YaHei/25856-26111.pbf +0 -0
  278. package/mapboxgl/style/fonts/Microsoft YaHei/26112-26367.pbf +0 -0
  279. package/mapboxgl/style/fonts/Microsoft YaHei/26368-26623.pbf +0 -0
  280. package/mapboxgl/style/fonts/Microsoft YaHei/26624-26879.pbf +0 -0
  281. package/mapboxgl/style/fonts/Microsoft YaHei/26880-27135.pbf +0 -0
  282. package/mapboxgl/style/fonts/Microsoft YaHei/27136-27391.pbf +0 -0
  283. package/mapboxgl/style/fonts/Microsoft YaHei/27392-27647.pbf +0 -0
  284. package/mapboxgl/style/fonts/Microsoft YaHei/27648-27903.pbf +0 -0
  285. package/mapboxgl/style/fonts/Microsoft YaHei/27904-28159.pbf +0 -0
  286. package/mapboxgl/style/fonts/Microsoft YaHei/2816-3071.pbf +3 -0
  287. package/mapboxgl/style/fonts/Microsoft YaHei/28160-28415.pbf +0 -0
  288. package/mapboxgl/style/fonts/Microsoft YaHei/28416-28671.pbf +0 -0
  289. package/mapboxgl/style/fonts/Microsoft YaHei/28672-28927.pbf +0 -0
  290. package/mapboxgl/style/fonts/Microsoft YaHei/28928-29183.pbf +0 -0
  291. package/mapboxgl/style/fonts/Microsoft YaHei/29184-29439.pbf +0 -0
  292. package/mapboxgl/style/fonts/Microsoft YaHei/29440-29695.pbf +0 -0
  293. package/mapboxgl/style/fonts/Microsoft YaHei/29696-29951.pbf +0 -0
  294. package/mapboxgl/style/fonts/Microsoft YaHei/29952-30207.pbf +0 -0
  295. package/mapboxgl/style/fonts/Microsoft YaHei/30208-30463.pbf +0 -0
  296. package/mapboxgl/style/fonts/Microsoft YaHei/30464-30719.pbf +0 -0
  297. package/mapboxgl/style/fonts/Microsoft YaHei/3072-3327.pbf +3 -0
  298. package/mapboxgl/style/fonts/Microsoft YaHei/30720-30975.pbf +0 -0
  299. package/mapboxgl/style/fonts/Microsoft YaHei/30976-31231.pbf +0 -0
  300. package/mapboxgl/style/fonts/Microsoft YaHei/31232-31487.pbf +0 -0
  301. package/mapboxgl/style/fonts/Microsoft YaHei/31488-31743.pbf +0 -0
  302. package/mapboxgl/style/fonts/Microsoft YaHei/31744-31999.pbf +0 -0
  303. package/mapboxgl/style/fonts/Microsoft YaHei/32000-32255.pbf +0 -0
  304. package/mapboxgl/style/fonts/Microsoft YaHei/32256-32511.pbf +0 -0
  305. package/mapboxgl/style/fonts/Microsoft YaHei/32512-32767.pbf +0 -0
  306. package/mapboxgl/style/fonts/Microsoft YaHei/32768-33023.pbf +0 -0
  307. package/mapboxgl/style/fonts/Microsoft YaHei/33024-33279.pbf +0 -0
  308. package/mapboxgl/style/fonts/Microsoft YaHei/3328-3583.pbf +3 -0
  309. package/mapboxgl/style/fonts/Microsoft YaHei/33280-33535.pbf +0 -0
  310. package/mapboxgl/style/fonts/Microsoft YaHei/33536-33791.pbf +0 -0
  311. package/mapboxgl/style/fonts/Microsoft YaHei/33792-34047.pbf +0 -0
  312. package/mapboxgl/style/fonts/Microsoft YaHei/34048-34303.pbf +0 -0
  313. package/mapboxgl/style/fonts/Microsoft YaHei/34304-34559.pbf +0 -0
  314. package/mapboxgl/style/fonts/Microsoft YaHei/34560-34815.pbf +0 -0
  315. package/mapboxgl/style/fonts/Microsoft YaHei/34816-35071.pbf +0 -0
  316. package/mapboxgl/style/fonts/Microsoft YaHei/35072-35327.pbf +0 -0
  317. package/mapboxgl/style/fonts/Microsoft YaHei/35328-35583.pbf +0 -0
  318. package/mapboxgl/style/fonts/Microsoft YaHei/35584-35839.pbf +0 -0
  319. package/mapboxgl/style/fonts/Microsoft YaHei/3584-3839.pbf +3 -0
  320. package/mapboxgl/style/fonts/Microsoft YaHei/35840-36095.pbf +0 -0
  321. package/mapboxgl/style/fonts/Microsoft YaHei/36096-36351.pbf +0 -0
  322. package/mapboxgl/style/fonts/Microsoft YaHei/36352-36607.pbf +0 -0
  323. package/mapboxgl/style/fonts/Microsoft YaHei/36608-36863.pbf +0 -0
  324. package/mapboxgl/style/fonts/Microsoft YaHei/36864-37119.pbf +0 -0
  325. package/mapboxgl/style/fonts/Microsoft YaHei/37120-37375.pbf +0 -0
  326. package/mapboxgl/style/fonts/Microsoft YaHei/37376-37631.pbf +0 -0
  327. package/mapboxgl/style/fonts/Microsoft YaHei/37632-37887.pbf +0 -0
  328. package/mapboxgl/style/fonts/Microsoft YaHei/37888-38143.pbf +0 -0
  329. package/mapboxgl/style/fonts/Microsoft YaHei/38144-38399.pbf +0 -0
  330. package/mapboxgl/style/fonts/Microsoft YaHei/3840-4095.pbf +3 -0
  331. package/mapboxgl/style/fonts/Microsoft YaHei/38400-38655.pbf +0 -0
  332. package/mapboxgl/style/fonts/Microsoft YaHei/38656-38911.pbf +0 -0
  333. package/mapboxgl/style/fonts/Microsoft YaHei/38912-39167.pbf +0 -0
  334. package/mapboxgl/style/fonts/Microsoft YaHei/39168-39423.pbf +0 -0
  335. package/mapboxgl/style/fonts/Microsoft YaHei/39424-39679.pbf +0 -0
  336. package/mapboxgl/style/fonts/Microsoft YaHei/39680-39935.pbf +0 -0
  337. package/mapboxgl/style/fonts/Microsoft YaHei/39936-40191.pbf +0 -0
  338. package/mapboxgl/style/fonts/Microsoft YaHei/40192-40447.pbf +0 -0
  339. package/mapboxgl/style/fonts/Microsoft YaHei/40448-40703.pbf +0 -0
  340. package/mapboxgl/style/fonts/Microsoft YaHei/40704-40959.pbf +0 -0
  341. package/mapboxgl/style/fonts/Microsoft YaHei/4096-4351.pbf +3 -0
  342. package/mapboxgl/style/fonts/Microsoft YaHei/40960-41215.pbf +3 -0
  343. package/mapboxgl/style/fonts/Microsoft YaHei/41216-41471.pbf +3 -0
  344. package/mapboxgl/style/fonts/Microsoft YaHei/41472-41727.pbf +3 -0
  345. package/mapboxgl/style/fonts/Microsoft YaHei/41728-41983.pbf +3 -0
  346. package/mapboxgl/style/fonts/Microsoft YaHei/41984-42239.pbf +3 -0
  347. package/mapboxgl/style/fonts/Microsoft YaHei/42240-42495.pbf +3 -0
  348. package/mapboxgl/style/fonts/Microsoft YaHei/42496-42751.pbf +3 -0
  349. package/mapboxgl/style/fonts/Microsoft YaHei/42752-43007.pbf +3 -0
  350. package/mapboxgl/style/fonts/Microsoft YaHei/43008-43263.pbf +3 -0
  351. package/mapboxgl/style/fonts/Microsoft YaHei/43264-43519.pbf +3 -0
  352. package/mapboxgl/style/fonts/Microsoft YaHei/4352-4607.pbf +3 -0
  353. package/mapboxgl/style/fonts/Microsoft YaHei/43520-43775.pbf +3 -0
  354. package/mapboxgl/style/fonts/Microsoft YaHei/43776-44031.pbf +3 -0
  355. package/mapboxgl/style/fonts/Microsoft YaHei/44032-44287.pbf +3 -0
  356. package/mapboxgl/style/fonts/Microsoft YaHei/44288-44543.pbf +3 -0
  357. package/mapboxgl/style/fonts/Microsoft YaHei/44544-44799.pbf +3 -0
  358. package/mapboxgl/style/fonts/Microsoft YaHei/44800-45055.pbf +3 -0
  359. package/mapboxgl/style/fonts/Microsoft YaHei/45056-45311.pbf +3 -0
  360. package/mapboxgl/style/fonts/Microsoft YaHei/45312-45567.pbf +3 -0
  361. package/mapboxgl/style/fonts/Microsoft YaHei/45568-45823.pbf +3 -0
  362. package/mapboxgl/style/fonts/Microsoft YaHei/45824-46079.pbf +3 -0
  363. package/mapboxgl/style/fonts/Microsoft YaHei/4608-4863.pbf +3 -0
  364. package/mapboxgl/style/fonts/Microsoft YaHei/46080-46335.pbf +3 -0
  365. package/mapboxgl/style/fonts/Microsoft YaHei/46336-46591.pbf +3 -0
  366. package/mapboxgl/style/fonts/Microsoft YaHei/46592-46847.pbf +3 -0
  367. package/mapboxgl/style/fonts/Microsoft YaHei/46848-47103.pbf +3 -0
  368. package/mapboxgl/style/fonts/Microsoft YaHei/47104-47359.pbf +3 -0
  369. package/mapboxgl/style/fonts/Microsoft YaHei/47360-47615.pbf +3 -0
  370. package/mapboxgl/style/fonts/Microsoft YaHei/47616-47871.pbf +3 -0
  371. package/mapboxgl/style/fonts/Microsoft YaHei/47872-48127.pbf +3 -0
  372. package/mapboxgl/style/fonts/Microsoft YaHei/48128-48383.pbf +3 -0
  373. package/mapboxgl/style/fonts/Microsoft YaHei/48384-48639.pbf +3 -0
  374. package/mapboxgl/style/fonts/Microsoft YaHei/4864-5119.pbf +3 -0
  375. package/mapboxgl/style/fonts/Microsoft YaHei/48640-48895.pbf +3 -0
  376. package/mapboxgl/style/fonts/Microsoft YaHei/48896-49151.pbf +3 -0
  377. package/mapboxgl/style/fonts/Microsoft YaHei/49152-49407.pbf +3 -0
  378. package/mapboxgl/style/fonts/Microsoft YaHei/49408-49663.pbf +3 -0
  379. package/mapboxgl/style/fonts/Microsoft YaHei/49664-49919.pbf +3 -0
  380. package/mapboxgl/style/fonts/Microsoft YaHei/49920-50175.pbf +3 -0
  381. package/mapboxgl/style/fonts/Microsoft YaHei/50176-50431.pbf +3 -0
  382. package/mapboxgl/style/fonts/Microsoft YaHei/50432-50687.pbf +3 -0
  383. package/mapboxgl/style/fonts/Microsoft YaHei/50688-50943.pbf +3 -0
  384. package/mapboxgl/style/fonts/Microsoft YaHei/50944-51199.pbf +3 -0
  385. package/mapboxgl/style/fonts/Microsoft YaHei/512-767.pbf +0 -0
  386. package/mapboxgl/style/fonts/Microsoft YaHei/5120-5375.pbf +3 -0
  387. package/mapboxgl/style/fonts/Microsoft YaHei/51200-51455.pbf +3 -0
  388. package/mapboxgl/style/fonts/Microsoft YaHei/51456-51711.pbf +3 -0
  389. package/mapboxgl/style/fonts/Microsoft YaHei/51712-51967.pbf +3 -0
  390. package/mapboxgl/style/fonts/Microsoft YaHei/51968-52223.pbf +3 -0
  391. package/mapboxgl/style/fonts/Microsoft YaHei/52224-52479.pbf +3 -0
  392. package/mapboxgl/style/fonts/Microsoft YaHei/52480-52735.pbf +3 -0
  393. package/mapboxgl/style/fonts/Microsoft YaHei/52736-52991.pbf +3 -0
  394. package/mapboxgl/style/fonts/Microsoft YaHei/52992-53247.pbf +3 -0
  395. package/mapboxgl/style/fonts/Microsoft YaHei/53248-53503.pbf +3 -0
  396. package/mapboxgl/style/fonts/Microsoft YaHei/53504-53759.pbf +3 -0
  397. package/mapboxgl/style/fonts/Microsoft YaHei/5376-5631.pbf +3 -0
  398. package/mapboxgl/style/fonts/Microsoft YaHei/53760-54015.pbf +3 -0
  399. package/mapboxgl/style/fonts/Microsoft YaHei/54016-54271.pbf +3 -0
  400. package/mapboxgl/style/fonts/Microsoft YaHei/54272-54527.pbf +3 -0
  401. package/mapboxgl/style/fonts/Microsoft YaHei/54528-54783.pbf +3 -0
  402. package/mapboxgl/style/fonts/Microsoft YaHei/54784-55039.pbf +3 -0
  403. package/mapboxgl/style/fonts/Microsoft YaHei/55040-55295.pbf +3 -0
  404. package/mapboxgl/style/fonts/Microsoft YaHei/55296-55551.pbf +3 -0
  405. package/mapboxgl/style/fonts/Microsoft YaHei/55552-55807.pbf +3 -0
  406. package/mapboxgl/style/fonts/Microsoft YaHei/55808-56063.pbf +3 -0
  407. package/mapboxgl/style/fonts/Microsoft YaHei/56064-56319.pbf +3 -0
  408. package/mapboxgl/style/fonts/Microsoft YaHei/5632-5887.pbf +3 -0
  409. package/mapboxgl/style/fonts/Microsoft YaHei/56320-56575.pbf +3 -0
  410. package/mapboxgl/style/fonts/Microsoft YaHei/56576-56831.pbf +3 -0
  411. package/mapboxgl/style/fonts/Microsoft YaHei/56832-57087.pbf +3 -0
  412. package/mapboxgl/style/fonts/Microsoft YaHei/57088-57343.pbf +3 -0
  413. package/mapboxgl/style/fonts/Microsoft YaHei/57344-57599.pbf +3 -0
  414. package/mapboxgl/style/fonts/Microsoft YaHei/57600-57855.pbf +3 -0
  415. package/mapboxgl/style/fonts/Microsoft YaHei/57856-58111.pbf +3 -0
  416. package/mapboxgl/style/fonts/Microsoft YaHei/58112-58367.pbf +3 -0
  417. package/mapboxgl/style/fonts/Microsoft YaHei/58368-58623.pbf +3 -0
  418. package/mapboxgl/style/fonts/Microsoft YaHei/58624-58879.pbf +3 -0
  419. package/mapboxgl/style/fonts/Microsoft YaHei/5888-6143.pbf +3 -0
  420. package/mapboxgl/style/fonts/Microsoft YaHei/58880-59135.pbf +3 -0
  421. package/mapboxgl/style/fonts/Microsoft YaHei/59136-59391.pbf +3 -0
  422. package/mapboxgl/style/fonts/Microsoft YaHei/59392-59647.pbf +3 -0
  423. package/mapboxgl/style/fonts/Microsoft YaHei/59648-59903.pbf +3 -0
  424. package/mapboxgl/style/fonts/Microsoft YaHei/59904-60159.pbf +3 -0
  425. package/mapboxgl/style/fonts/Microsoft YaHei/60160-60415.pbf +3 -0
  426. package/mapboxgl/style/fonts/Microsoft YaHei/60416-60671.pbf +3 -0
  427. package/mapboxgl/style/fonts/Microsoft YaHei/60672-60927.pbf +3 -0
  428. package/mapboxgl/style/fonts/Microsoft YaHei/60928-61183.pbf +3 -0
  429. package/mapboxgl/style/fonts/Microsoft YaHei/61184-61439.pbf +3 -0
  430. package/mapboxgl/style/fonts/Microsoft YaHei/6144-6399.pbf +3 -0
  431. package/mapboxgl/style/fonts/Microsoft YaHei/61440-61695.pbf +3 -0
  432. package/mapboxgl/style/fonts/Microsoft YaHei/61696-61951.pbf +3 -0
  433. package/mapboxgl/style/fonts/Microsoft YaHei/61952-62207.pbf +3 -0
  434. package/mapboxgl/style/fonts/Microsoft YaHei/62208-62463.pbf +3 -0
  435. package/mapboxgl/style/fonts/Microsoft YaHei/62464-62719.pbf +3 -0
  436. package/mapboxgl/style/fonts/Microsoft YaHei/62720-62975.pbf +3 -0
  437. package/mapboxgl/style/fonts/Microsoft YaHei/62976-63231.pbf +3 -0
  438. package/mapboxgl/style/fonts/Microsoft YaHei/63232-63487.pbf +3 -0
  439. package/mapboxgl/style/fonts/Microsoft YaHei/63488-63743.pbf +3 -0
  440. package/mapboxgl/style/fonts/Microsoft YaHei/63744-63999.pbf +0 -0
  441. package/mapboxgl/style/fonts/Microsoft YaHei/6400-6655.pbf +3 -0
  442. package/mapboxgl/style/fonts/Microsoft YaHei/64000-64255.pbf +0 -0
  443. package/mapboxgl/style/fonts/Microsoft YaHei/64256-64511.pbf +3 -0
  444. package/mapboxgl/style/fonts/Microsoft YaHei/64512-64767.pbf +3 -0
  445. package/mapboxgl/style/fonts/Microsoft YaHei/64768-65023.pbf +3 -0
  446. package/mapboxgl/style/fonts/Microsoft YaHei/65024-65279.pbf +0 -0
  447. package/mapboxgl/style/fonts/Microsoft YaHei/65280-65535.pbf +0 -0
  448. package/mapboxgl/style/fonts/Microsoft YaHei/6656-6911.pbf +3 -0
  449. package/mapboxgl/style/fonts/Microsoft YaHei/6912-7167.pbf +3 -0
  450. package/mapboxgl/style/fonts/Microsoft YaHei/7168-7423.pbf +3 -0
  451. package/mapboxgl/style/fonts/Microsoft YaHei/7424-7679.pbf +3 -0
  452. package/mapboxgl/style/fonts/Microsoft YaHei/768-1023.pbf +0 -0
  453. package/mapboxgl/style/fonts/Microsoft YaHei/7680-7935.pbf +0 -0
  454. package/mapboxgl/style/fonts/Microsoft YaHei/7936-8191.pbf +3 -0
  455. package/mapboxgl/style/fonts/Microsoft YaHei/8192-8447.pbf +0 -0
  456. package/mapboxgl/style/fonts/Microsoft YaHei/8448-8703.pbf +0 -0
  457. package/mapboxgl/style/fonts/Microsoft YaHei/8704-8959.pbf +0 -0
  458. package/mapboxgl/style/fonts/Microsoft YaHei/8960-9215.pbf +0 -0
  459. package/mapboxgl/style/fonts/Microsoft YaHei/9216-9471.pbf +0 -0
  460. package/mapboxgl/style/fonts/Microsoft YaHei/9472-9727.pbf +0 -0
  461. package/mapboxgl/style/fonts/Microsoft YaHei/9728-9983.pbf +0 -0
  462. package/mapboxgl/style/fonts/Microsoft YaHei/9984-10239.pbf +4 -0
  463. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/0-255.pbf +0 -0
  464. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/1024-1279.pbf +0 -0
  465. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/10240-10495.pbf +3 -0
  466. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/10496-10751.pbf +3 -0
  467. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/10752-11007.pbf +3 -0
  468. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/11008-11263.pbf +3 -0
  469. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/11264-11519.pbf +3 -0
  470. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/11520-11775.pbf +3 -0
  471. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/11776-12031.pbf +3 -0
  472. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/12032-12287.pbf +3 -0
  473. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/12288-12543.pbf +0 -0
  474. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/12544-12799.pbf +0 -0
  475. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/1280-1535.pbf +0 -0
  476. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/12800-13055.pbf +0 -0
  477. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/13056-13311.pbf +0 -0
  478. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/13312-13567.pbf +3 -0
  479. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/13568-13823.pbf +3 -0
  480. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/13824-14079.pbf +3 -0
  481. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/14080-14335.pbf +3 -0
  482. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/14336-14591.pbf +3 -0
  483. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/14592-14847.pbf +3 -0
  484. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/14848-15103.pbf +3 -0
  485. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/16384-16639.pbf +3 -0
  486. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/16640-16895.pbf +3 -0
  487. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/16896-17151.pbf +3 -0
  488. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/17152-17407.pbf +3 -0
  489. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/1792-2047.pbf +3 -0
  490. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/18432-18687.pbf +3 -0
  491. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/19968-20223.pbf +0 -0
  492. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/20224-20479.pbf +0 -0
  493. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/2048-2303.pbf +3 -0
  494. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/20736-20991.pbf +0 -0
  495. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/21248-21503.pbf +0 -0
  496. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/21504-21759.pbf +0 -0
  497. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/21760-22015.pbf +0 -0
  498. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/22016-22271.pbf +0 -0
  499. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/22272-22527.pbf +118 -19
  500. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/22528-22783.pbf +0 -0
  501. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/22784-23039.pbf +0 -0
  502. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/2304-2559.pbf +0 -0
  503. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/23040-23295.pbf +0 -0
  504. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/23552-23807.pbf +0 -0
  505. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/24064-24319.pbf +0 -0
  506. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/24320-24575.pbf +0 -0
  507. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/24576-24831.pbf +0 -0
  508. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/24832-25087.pbf +0 -0
  509. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/25088-25343.pbf +0 -0
  510. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/25344-25599.pbf +0 -0
  511. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/256-511.pbf +0 -0
  512. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/2560-2815.pbf +0 -0
  513. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/25600-25855.pbf +0 -0
  514. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/25856-26111.pbf +0 -0
  515. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/26112-26367.pbf +0 -0
  516. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/26368-26623.pbf +0 -0
  517. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/2816-3071.pbf +0 -0
  518. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/3072-3327.pbf +0 -0
  519. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/31744-31999.pbf +0 -0
  520. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/32000-32255.pbf +0 -0
  521. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/32256-32511.pbf +0 -0
  522. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/32512-32767.pbf +0 -0
  523. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/32768-33023.pbf +0 -0
  524. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/33024-33279.pbf +0 -0
  525. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/3328-3583.pbf +0 -0
  526. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/33536-33791.pbf +0 -0
  527. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/33792-34047.pbf +0 -0
  528. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/34048-34303.pbf +0 -0
  529. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/34304-34559.pbf +0 -0
  530. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/34560-34815.pbf +0 -0
  531. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/34816-35071.pbf +0 -0
  532. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/35072-35327.pbf +0 -0
  533. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/35328-35583.pbf +0 -0
  534. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/3584-3839.pbf +0 -0
  535. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/35840-36095.pbf +0 -0
  536. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/36096-36351.pbf +0 -0
  537. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/36352-36607.pbf +0 -0
  538. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/36608-36863.pbf +0 -0
  539. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/37120-37375.pbf +0 -0
  540. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/37376-37631.pbf +0 -0
  541. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/37888-38143.pbf +0 -0
  542. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/38144-38399.pbf +0 -0
  543. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/38400-38655.pbf +0 -0
  544. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/38656-38911.pbf +0 -0
  545. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/38912-39167.pbf +0 -0
  546. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/39168-39423.pbf +0 -0
  547. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/39424-39679.pbf +0 -0
  548. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/39680-39935.pbf +0 -0
  549. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/39936-40191.pbf +0 -0
  550. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/40448-40703.pbf +0 -0
  551. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/40704-40959.pbf +0 -0
  552. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/40960-41215.pbf +3 -0
  553. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/41216-41471.pbf +3 -0
  554. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/41472-41727.pbf +3 -0
  555. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/41728-41983.pbf +3 -0
  556. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/41984-42239.pbf +3 -0
  557. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/42240-42495.pbf +3 -0
  558. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/42496-42751.pbf +3 -0
  559. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/42752-43007.pbf +3 -0
  560. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/43008-43263.pbf +3 -0
  561. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/43264-43519.pbf +3 -0
  562. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/43776-44031.pbf +3 -0
  563. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/44032-44287.pbf +0 -0
  564. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/44288-44543.pbf +0 -0
  565. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/44544-44799.pbf +0 -0
  566. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/44800-45055.pbf +0 -0
  567. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/45056-45311.pbf +0 -0
  568. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/45312-45567.pbf +0 -0
  569. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/45568-45823.pbf +0 -0
  570. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/46080-46335.pbf +0 -0
  571. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/46336-46591.pbf +0 -0
  572. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/46592-46847.pbf +0 -0
  573. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/46848-47103.pbf +0 -0
  574. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/47104-47359.pbf +0 -0
  575. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/47360-47615.pbf +0 -0
  576. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/47872-48127.pbf +0 -0
  577. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/48128-48383.pbf +78 -0
  578. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/48384-48639.pbf +0 -0
  579. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/49664-49919.pbf +0 -0
  580. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/50176-50431.pbf +0 -0
  581. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/50432-50687.pbf +0 -0
  582. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/50688-50943.pbf +0 -0
  583. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/50944-51199.pbf +0 -0
  584. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/512-767.pbf +0 -0
  585. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/5120-5375.pbf +3 -0
  586. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/51200-51455.pbf +0 -0
  587. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/51456-51711.pbf +117 -4
  588. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/51712-51967.pbf +0 -0
  589. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/51968-52223.pbf +0 -0
  590. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/52480-52735.pbf +0 -0
  591. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/52736-52991.pbf +0 -0
  592. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/52992-53247.pbf +0 -0
  593. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/5376-5631.pbf +3 -0
  594. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/5632-5887.pbf +3 -0
  595. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/5888-6143.pbf +3 -0
  596. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/6144-6399.pbf +3 -0
  597. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/6400-6655.pbf +3 -0
  598. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/6656-6911.pbf +3 -0
  599. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/6912-7167.pbf +3 -0
  600. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/7168-7423.pbf +3 -0
  601. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/7424-7679.pbf +3 -0
  602. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/7680-7935.pbf +0 -0
  603. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/8192-8447.pbf +0 -0
  604. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/8448-8703.pbf +0 -0
  605. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/8704-8959.pbf +0 -0
  606. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/8960-9215.pbf +0 -0
  607. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/9216-9471.pbf +0 -0
  608. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/9472-9727.pbf +0 -0
  609. package/mapboxgl/style/fonts/Open Sans Regular,Arial Unicode MS Regular/9984-10239.pbf +0 -0
  610. package/mapboxgl/style/sprite/dark/sprite.json +1 -0
  611. package/mapboxgl/style/sprite/dark/sprite.png +0 -0
  612. package/mapboxgl/style/sprite/dark/sprite@2x.json +1 -0
  613. package/mapboxgl/style/sprite/dark/sprite@2x.png +0 -0
  614. package/mapboxgl/utils/mapbox.js +3821 -0
  615. package/mapboxgl/utils/mapbox_native.js +2037 -0
  616. package/mapboxgl/utils/mapboxgl.md +138 -0
  617. package/mapgis/js/datalayer/arcgis-layer/ArcGISMapImageLayer.js +586 -0
  618. package/mapgis/js/datalayer/arcgis-layer/ArcGISTileLayer.js +515 -0
  619. package/mapgis/js/datalayer/arcgis-layer/ArcGISVectorTileLayer.js +907 -0
  620. package/mapgis/js/datalayer/common-layer/Cesium3DTilesCacheLayer.js +1036 -0
  621. package/mapgis/js/datalayer/common-layer/EchartsLayer.js +861 -0
  622. package/mapgis/js/datalayer/igs-layer/IGSFeatureLayer.js +863 -0
  623. package/mapgis/js/datalayer/igs-layer/IGSImageryLayer.js +460 -0
  624. package/mapgis/js/datalayer/igs-layer/IGSImageryTileLayer.js +404 -0
  625. package/mapgis/js/datalayer/igs-layer/IGSMapImageLayer.js +607 -0
  626. package/mapgis/js/datalayer/igs-layer/IGSTileLayer.js +397 -0
  627. package/mapgis/js/datalayer/igs-layer/IGSVectorTileLayer.js +580 -0
  628. package/mapgis/js/datalayer/igs-layer/ISSceneLayer.js +328 -0
  629. package/mapgis/js/datalayer/igs-layer/ImageryLayer.js +463 -0
  630. package/mapgis/js/datalayer/igs-layer/ImageryTileLayer.js +413 -0
  631. package/mapgis/js/datalayer/index.js +206 -0
  632. package/mapgis/js/datalayer/ogc-layer/wfsLayer.js +670 -0
  633. package/mapgis/js/datalayer/ogc-layer/wmsLayer.js +418 -0
  634. package/mapgis/js/datalayer/ogc-layer/wmtsLayer.js +419 -0
  635. package/mapgis/utils/mapgis-common.js +2945 -0
  636. package/package.json +31 -0
@@ -0,0 +1,2037 @@
1
+ /*
2
+ * @author: chensk
3
+ * @updateTime: 2026-4-14 16:56
4
+ */
5
+
6
+ // mapbox-native.js
7
+ import {
8
+ base_sources,LayerConfig,
9
+ business_sources, business_layers,
10
+ Dark_Sources, Light_Sources,
11
+ Dark_Layers, Light_Layers,
12
+ Vector_Layers, Image_Layers,
13
+ } from "../../baseSetting/gis-data/sources_layers";
14
+
15
+ /**
16
+ * 地图配置文件
17
+ */
18
+ const mapConfig = {
19
+ noMap: false,
20
+ mapUrl: 'https://geoserver.yw.hc-yun.com', // 离线地图根目录
21
+ mapUrl2: 'http://36.133.23.184:18090', // 外网地图根目录
22
+ workspace: 'mango', // 地图服务的工作空间
23
+ map_srid: 'EPSG:3857', // 底图坐标系
24
+ business_srid: 'EPSG:3857', // 覆盖物坐标系
25
+ isOnline: true,
26
+
27
+ minZoom: 5, // 最小缩放层级 4.75
28
+ maxZoom: 17, // 最大文件服务器缩放层级
29
+ maxOnlineZoom: 22, // 最大在线地图缩放层级
30
+ zoom: 10, // 默认缩放层级
31
+
32
+ pitch: 0, // 仰角
33
+ bearing: 0, // 方位角
34
+ mapExtent: [73.55, 3.85, 135.08, 53.55], // [西, 南, 东, 北]
35
+
36
+ center: [121.91946010684916, 30.9085305399487], // 中心点 {lng: 111.61666756532281, lat: 30.35533711534265}
37
+ }
38
+
39
+ /**
40
+ * 开发环境2D/2.5D底图配置
41
+ */
42
+ const DevMapConfig = {
43
+ projection_from: 'gcj02',
44
+ projection_to: 'wgs84'
45
+ }
46
+
47
+ /**
48
+ * 深色样式
49
+ */
50
+ const Dark_Style = {
51
+ textColor: '#F8F8FF',
52
+ haloColor: '#8B8B8B',
53
+ haloWidth: 0.1,
54
+ haloBlur: 0,
55
+
56
+ boundaryColor: '#92FBE2', // 区域边界颜色 FFD188
57
+ }
58
+
59
+ /**
60
+ * 浅色地图样式
61
+ */
62
+ const Light_Style = {
63
+ textColor: '#191970',
64
+ textHaloWidth: 0.25,
65
+ boundary_lineColor: '#4169E1',
66
+ }
67
+
68
+ /**
69
+ * Token工具
70
+ */
71
+ const TokenUtils = {
72
+ /*mapbox_token*/
73
+ MapboxGL_AccessToken: 'pk.eyJ1IjoibWJuZ2hkIiwiYSI6ImNtNjV3YnVmNTFzem4ya3NveTQ0c3p2ZHEifQ.ILnudtLw6aF2YujqXBQpSQ',
74
+ /*cesium_token*/
75
+ Cesium_AccessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OTgxNTY1Ni05ZWQzLTQ5OWMtODVlMS1kZTQyNzE5ODkyMzYiLCJpZCI6MTUzNDgsInNjb3BlcyI6WyJhc2wiLCJhc3IiLCJhc3ciLCJnYyJdLCJpYXQiOjE1Njc2NTMzMzZ9.lgaMvwkiWOimFhfJ4dgfNmKZDfjqIPaAfg0ycjwFTfc',
76
+ /*天地图企业token*/
77
+ TDT_token: '7ecf165a6717ea33c926889518f26fa4'
78
+ }
79
+
80
+ let pendingRequests = new Set();
81
+ const throttleDelay = 300; // 300ms 内相同瓦片不重复请求
82
+
83
+ class MapboxNative {
84
+ constructor() {
85
+ this.workspace = mapConfig.workspace;
86
+ this.mapType = "vector";
87
+ this.vectorSignalStr = ['vec', 'cva'];
88
+ this.imageSignalStr = ['img', 'cia'];
89
+ this.map_srid = mapConfig.map_srid;
90
+ this.business_srid = mapConfig.business_srid;
91
+ this.mbMap = null;
92
+ this.styleUrl = mapConfig.mapUrl + '/mapbox-gl/style';
93
+ this.opts = {};
94
+
95
+ // 图标资源
96
+ this.point_icon = require('../../baseSetting/images/map/point.png');
97
+ this.img_todo = require('../../baseSetting/images/map/todo.png');
98
+ this.img_done = require('../../baseSetting/images/map/done.png');
99
+ this.img_invalid = require('../../baseSetting/images/map/invalid.png');
100
+ this.img_error = require('../../baseSetting/images/map/error.png');
101
+
102
+ // 颜色配置
103
+ this.actual_color = '#7ed321';
104
+ this.plan_color_valid = '#3a6bdb';
105
+ this.plan_color_invalid = '#9b9b9b';
106
+ }
107
+
108
+ /**
109
+ * 创建地图实例
110
+ * theme = 'dark'时 将使用离线暗色底图瓦片,将mapConfig中的isOnline设置为false,此时默认使用文件服务器上的暗色瓦片资源
111
+ * theme = 'light'时 将使用在线亮色底图瓦片,将mapConfig中的isOnline设置为true,此时默认使用天地图资源
112
+ * theme = 'light'时 将使用在线亮色底图瓦片,将mapConfig中的isOnline设置为false,此时默认使用文件服务器上的亮色瓦片资源
113
+ * @param opts
114
+ * @param callback
115
+ */
116
+ create (opts, callback) {
117
+ this.opts = opts
118
+ if (mapConfig.noMap) {
119
+ this.$message.info("未配置地图")
120
+ alert("未配置地图")
121
+ return
122
+ } else {
123
+ if (typeof mapboxgl == 'undefined') {
124
+ // 使用 Promise 确保资源加载完成后再执行后续逻辑
125
+ this.loadMapboxResources().then(() => {
126
+ this.initMap(opts, callback);
127
+ }).catch((error) => {
128
+ console.error("地图资源加载失败:", error);
129
+ callback && callback();
130
+ });
131
+ } else {
132
+ this.initMap(opts, callback);
133
+ }
134
+ }
135
+ }
136
+
137
+ /**
138
+ * 添加图标资源
139
+ * @param map
140
+ */
141
+ addImageSource (map) {
142
+ // 添加图标到地图
143
+ if (!map.hasImage('img_done')) {
144
+ map.loadImage(this.img_done, (error, image) => {
145
+ if (error) throw error;
146
+ map.addImage('img_done', image);
147
+ });
148
+ }
149
+
150
+ if (!map.hasImage('img_error')) {
151
+ map.loadImage(this.img_error, (error, image) => {
152
+ if (error) throw error;
153
+ map.addImage('img_error', image);
154
+ });
155
+ }
156
+
157
+ if (!map.hasImage('img_invalid')) {
158
+ map.loadImage(this.img_invalid, (error, image) => {
159
+ if (error) throw error;
160
+ map.addImage('img_invalid', image);
161
+ });
162
+ }
163
+
164
+ if (!map.hasImage('img_todo')) {
165
+ map.loadImage(this.img_todo, (error, image) => {
166
+ if (error) throw error;
167
+ map.addImage('img_todo', image);
168
+ });
169
+ }
170
+ }
171
+
172
+ /**
173
+ * 加载必要的资源(地图框架以及通用资源)
174
+ * @returns {Promise<unknown>}
175
+ */
176
+ loadMapboxResources () {
177
+ return new Promise((resolve, reject) => {
178
+ const script = document.createElement("script");
179
+ script.src = mapConfig.mapUrl + "/mapbox-gl/mapbox-gl.js";
180
+
181
+ const link = document.createElement("link");
182
+ link.href = mapConfig.mapUrl + "/mapbox-gl/mapbox-gl.css";
183
+ link.rel = "stylesheet";
184
+
185
+ // 风格样式文件
186
+ const linkSearch = document.createElement("link");
187
+ linkSearch.href = mapConfig.mapUrl + "/mapbox-gl/gis-" + this.opts.theme + ".css";
188
+ linkSearch.rel = "stylesheet";
189
+
190
+ let scriptLoaded = false;
191
+ let linkLoaded = false;
192
+ let linkSearchLoaded = false;
193
+
194
+ const checkComplete = () => {
195
+ if (scriptLoaded && linkLoaded && linkSearchLoaded) {
196
+ resolve();
197
+ }
198
+ };
199
+
200
+ script.onload = () => {
201
+ scriptLoaded = true;
202
+ checkComplete();
203
+ };
204
+
205
+ link.onload = () => {
206
+ linkLoaded = true;
207
+ checkComplete();
208
+ };
209
+
210
+ linkSearch.onload = () => {
211
+ linkSearchLoaded = true;
212
+ checkComplete();
213
+ };
214
+
215
+ script.onerror = () => reject(new Error("Mapbox GL JS 加载失败"));
216
+ link.onerror = () => reject(new Error("Mapbox GL CSS 加载失败"));
217
+ linkSearch.onerror = () => reject(new Error("gis公共样式 加载失败"));
218
+
219
+ document.body.appendChild(script);
220
+ document.body.appendChild(link);
221
+ document.body.appendChild(linkSearch);
222
+ });
223
+ }
224
+
225
+ /**
226
+ * 初始化地图
227
+ * @param opts
228
+ * @param callback
229
+ */
230
+ initMap (opts, callback) {
231
+ // 原有的地图初始化逻辑...
232
+ // 自定义样式
233
+ let baseSources = {}, baseLayers = [];
234
+ const customStyle = opts.theme === "dark" ? Dark_Style : Light_Style;
235
+ if (mapConfig.isOnline) {
236
+ const basemapType = mapConfig.map_srid === 'EPSG:3857' ? 'w' : 'c';
237
+ switch (this.mapType) {
238
+ case "vector":
239
+ this.vectorSignalStr.forEach(signal => {
240
+ baseSources['tdt_' + signal + '_tiles'] = {
241
+ type: 'raster',
242
+ tiles: [
243
+ 'https://t0.tianditu.gov.cn/' + signal + '_' + basemapType + '/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=' + signal + '&STYLE=default&TILEMATRIXSET=' + basemapType + '&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=' + TokenUtils.TDT_token,
244
+ ],
245
+ scheme: 'xyz', // 显式指定
246
+ minzoom: 0,
247
+ maxzoom: mapConfig.maxOnlineZoom,
248
+ tileSize: 256
249
+ }
250
+ })
251
+ break
252
+ case "raster":
253
+ this.imageSignalStr.forEach(signal => {
254
+ baseSources['tdt_' + signal + '_tiles'] = {
255
+ type: 'raster',
256
+ tiles: [
257
+ 'https://t0.tianditu.gov.cn/' + signal + '_' + basemapType + '/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=' + signal + '&STYLE=default&TILEMATRIXSET=' + basemapType + '&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=' + TokenUtils.TDT_token,
258
+ ],
259
+ scheme: 'xyz', // 显式指定
260
+ minzoom: 0,
261
+ maxzoom: mapConfig.maxOnlineZoom,
262
+ tileSize: 256
263
+ }
264
+ })
265
+ break
266
+ default:
267
+ break
268
+ }
269
+ for (let source in baseSources) {
270
+ baseLayers.push({
271
+ id: source,
272
+ type: 'raster',
273
+ source: source,
274
+ minzoom: 0,
275
+ maxzoom: mapConfig.maxOnlineZoom,
276
+ })
277
+ }
278
+ } else {
279
+ // 基础图层列表
280
+ baseSources = opts.theme === "dark" ? this.getGeoserverSources(Dark_Sources) : { ...this.formatBaseSource(base_sources), ...this.getGeoserverSources(Light_Sources) };
281
+ baseLayers = opts.theme === "dark" ? Dark_Layers : Light_Layers;
282
+ }
283
+
284
+ // 业务图层列表
285
+ const businessLayers = opts.theme === "dark" ? business_layers : business_layers;
286
+
287
+ let businessSources = this.getGeoserverSources(business_sources)
288
+
289
+ const mapId = opts.mapId;
290
+
291
+ mapboxgl.accessToken = TokenUtils.MapboxGL_AccessToken;
292
+
293
+ console.log('baseSources, baseLayers', baseSources, baseLayers);
294
+
295
+ // 优化并发
296
+ mapboxgl.config.MAX_PARALLEL_IMAGE_REQUESTS = 256;
297
+
298
+
299
+ this.mbMap = new mapboxgl.Map({
300
+ container: mapId,
301
+ minZoom: mapConfig.minZoom,
302
+ maxZoom: mapConfig.isOnline ? mapConfig.maxOnlineZoom : mapConfig.maxZoom,
303
+ zoom: mapConfig.zoom,
304
+ center: mapConfig.center,
305
+ maxBounds: [
306
+ [mapConfig.mapExtent[0], mapConfig.mapExtent[1]], // 西南角坐标 [minX, minY]
307
+ [mapConfig.mapExtent[2], mapConfig.mapExtent[3]] // 东北角坐标 [maxX, maxY]
308
+ ],
309
+ pitch: mapConfig.pitch, // 地图初始化时的倾角,按偏离屏幕水平面的度数计量(0-60)
310
+ bearing: mapConfig.bearing, // 地图初始化时的方位角(旋转角度),以正北方的逆时针转动度数计量
311
+ preserveDrawingBuffer: true, // 用于导出图片
312
+ constrainMode: 'width-and-height', // 限制地图在容器范围内
313
+ renderWorldCopies: false, // 避免重复渲染世界副本
314
+ dragRotate: false, // 禁用拖拽旋转
315
+ touchZoom: true, // 禁用触摸缩进
316
+ touchRotate: false, // 禁用触摸旋转
317
+ style: {
318
+ version: 8,
319
+ name: "mb_map_style",
320
+ sprite: this.styleUrl + "/sprite/" + opts.theme + "/sprite",
321
+ glyphs: this.styleUrl + "/fonts/{fontstack}/{range}.pbf",
322
+ transition: {
323
+ duration: 300,
324
+ delay: 0,
325
+ },
326
+ sources: {
327
+ ...baseSources
328
+ },
329
+ layers: baseLayers
330
+ },
331
+ // 添加以下配置来隐藏控件
332
+ attributionControl: false // 这会同时隐藏 logo 和 attribution
333
+ });
334
+
335
+ const map = this.mbMap
336
+
337
+ this.setStyle(map);
338
+
339
+ this.addImageSource(this.mbMap)
340
+
341
+ this.mbMap._customStyle = customStyle
342
+
343
+ this.mbMap.on('load', () => {
344
+ // 在地图加载完成后调用
345
+ // this._drawGridWithCenterLabels(map) // 测试用
346
+ // this.resetCenterAndZoom(map)
347
+
348
+ // 默认获取点击坐标位置
349
+ this.mbMap.on('click', (pos) => {
350
+ console.log(`点击位置 - 经度: ${pos.lngLat.lng}, 纬度: ${pos.lngLat.lat}`);
351
+ // 变量记录
352
+ window.currentLocation = [pos.lngLat.lng, pos.lngLat.lat]
353
+ this.getFeature(pos)
354
+ })
355
+
356
+ // @csk 离线瓦片加载最大层级出现空白情况的处理
357
+ this.mbMap.on('zoom', () => {
358
+ const currentZoom = this.mbMap.getZoom();
359
+ if (currentZoom > mapConfig.maxZoom) {
360
+ this.mbMap.setZoom(mapConfig.maxZoom);
361
+ }
362
+ });
363
+ // 或者更精确地处理
364
+ this.mbMap.on('zoomend', () => {
365
+ const currentZoom = this.mbMap.getZoom();
366
+ if (currentZoom >= mapConfig.maxZoom) {
367
+ this.mbMap.flyTo({
368
+ zoom: mapConfig.maxZoom,
369
+ duration: 0 // 瞬间跳转
370
+ });
371
+ }
372
+ });
373
+
374
+ this.hideLogo()
375
+
376
+
377
+ this.mbMap.resize() //确保各类页面map均尺寸正确
378
+ // Mapbox GL JS不需要动态加载脚本
379
+ callback && callback(this.mbMap);
380
+ });
381
+
382
+ //@csk 瓦片请求优化(节流)
383
+ this.mbMap.on('tile_request', (e) => {
384
+ const url = e.url;
385
+ if (pendingRequests.has(url)) {
386
+ e.preventDefault(); // 阻止重复请求
387
+ return;
388
+ }
389
+ pendingRequests.add(url);
390
+ setTimeout(() => pendingRequests.delete(url), throttleDelay);
391
+ });
392
+ }
393
+
394
+ /**
395
+ * 获取要素(点选)
396
+ * @param e
397
+ */
398
+ getFeature (e) {
399
+ // 获取点击位置的要素
400
+ const features = map.queryRenderedFeatures(e.point);
401
+
402
+ if (features.length > 0) {
403
+ const feature = features[0];
404
+ console.log('点击的要素:', feature.properties);
405
+ }
406
+ }
407
+
408
+ /**
409
+ * 隐藏MapBoxgl logo
410
+ */
411
+ hideLogo () {
412
+ console.log('logo is hidden')
413
+ let controls = map._controls;
414
+ controls.forEach(control => {
415
+ // 去除logo控件
416
+ if ('_updateLogo' in control) {
417
+ map.removeControl(control)
418
+ }
419
+
420
+ // 去除attribute控件
421
+ if ('_attribHTML' in control) {
422
+ map.removeControl(control)
423
+ }
424
+ })
425
+ }
426
+
427
+ /**
428
+ * 格式化基础图层源
429
+ * @param sources
430
+ * @returns {*}
431
+ */
432
+ formatBaseSource (sources) {
433
+ for (let lyrName in sources) {
434
+ // 瓦片服务地址为空时,使用默认地址,否则使用geoserver地址
435
+ if (!sources[lyrName].hasOwnProperty('tiles')) {
436
+ let tiles = this.joinTmsUrl(lyrName);
437
+ sources[lyrName].tiles = [tiles];
438
+ }
439
+ }
440
+ return sources
441
+ }
442
+
443
+ /**
444
+ * 切换底图
445
+ * @param {String} type -目标底图类型
446
+ */
447
+ changeMap (type) {
448
+ if (!this.mbMap || type === this.mapType) return;
449
+
450
+ let changedLayers = null;
451
+ switch (type) {
452
+ case 'vector':
453
+ changedLayers = Vector_Layers;
454
+ break;
455
+ case 'image':
456
+ changedLayers = Image_Layers;
457
+ break;
458
+ default:
459
+ return;
460
+ }
461
+
462
+ // 设置是否显示
463
+ changedLayers.forEach(layer => {
464
+ if (this.mbMap.getLayer(layer.id)) {
465
+ this.mbMap.setLayoutProperty(layer.id, 'visibility', layer.visibility);
466
+ }
467
+ });
468
+
469
+ this.mapType = type;
470
+ }
471
+
472
+ /**
473
+ * 重置地图中心点和缩放级别
474
+ * @param map
475
+ */
476
+ resetCenterAndZoom (map) {
477
+ if (!map) return;
478
+ map.jumpTo({ center: mapConfig.center, zoom: mapConfig.zoom });
479
+ console.log('地图已重置到默认中心点和缩放级别');
480
+ }
481
+
482
+ /**
483
+ * 拼接WMTS服务地址
484
+ * @param layerName -图层名称
485
+ */
486
+ joinWmtsUrl (layerName) {
487
+ return (
488
+ mapConfig.mapUrl +
489
+ "/geoserver/gwc/service/wmts?request=GetTile" +
490
+ "&service=WMTS" +
491
+ "&version=1.0.0" +
492
+ "&layer=" +
493
+ this.workspace +
494
+ ":" +
495
+ layerName +
496
+ "&style=" +
497
+ "&tilematrixset=" +
498
+ this.map_srid +
499
+ "&tilematrix=" +
500
+ this.map_srid +
501
+ ":{z}" +
502
+ "&format=image/png" +
503
+ "&tilecol={x}" +
504
+ "&tilerow={y}"
505
+ );
506
+ }
507
+
508
+ /**
509
+ * 拼接TMS服务地址
510
+ * @param layerName -图层名称
511
+ */
512
+ joinTmsUrl (layerName) {
513
+ return (
514
+ mapConfig.mapUrl +
515
+ "/geoserver/gwc/service/tms/1.0.0/" +
516
+ this.workspace +
517
+ ":" +
518
+ layerName +
519
+ "@" +
520
+ this.map_srid +
521
+ "@pbf/{z}/{x}/{y}.pbf"
522
+ );
523
+ }
524
+
525
+ /**
526
+ * 获取TMS服务地址
527
+ * @param z
528
+ * @param x
529
+ * @param y
530
+ * @returns {string}
531
+ */
532
+ getTmsUrl (z, x, y) {
533
+ const ymax = Math.pow(2, z) - 1;
534
+ const y_tms = ymax - y;
535
+ return mapConfig.mapUrl + `/gis-data/shenzhen/${z}/${x}/${y_tms}.png`;
536
+ }
537
+
538
+ /**
539
+ * 拼接WFS服务地址
540
+ * @param {String} layerName -图层名称
541
+ * @param {String} category -类别(pipeline、manhole等)
542
+ */
543
+ joinWfsUrl (layerName, category = null) {
544
+ let url = mapConfig.mapUrl +
545
+ "/geoserver/" +
546
+ this.workspace +
547
+ "/ows?request=GetFeature" +
548
+ "&service=WFS" +
549
+ "&version=1.1.0" +
550
+ "&typeName=" +
551
+ this.workspace +
552
+ ":" +
553
+ layerName +
554
+ "&outputFormat=application/json" +
555
+ "&srsName=" +
556
+ this.map_srid;
557
+
558
+ if (category) {
559
+ // 全局图层管理器入口
560
+ const layers = LayerConfig.Layers.filter((lc) => {
561
+ return lc.parent === category;
562
+ });
563
+ if (layers.length > 0 &&
564
+ layers[0].fields && layers[0].fields.length > 0) {
565
+ url += "&propertyName=geom,";
566
+ url += layers[0].fields;
567
+ }
568
+ }
569
+
570
+ return url;
571
+ }
572
+
573
+ /**
574
+ * 获取WFS服务查询根URL
575
+ *
576
+ * @returns {String}
577
+ */
578
+ getWfsQueryUrl () {
579
+ return (
580
+ mapConfig.mapUrl + "/geoserver/" + this.workspace +
581
+ "/ows?service=WFS&version=1.0.0" +
582
+ "&request=GetFeature" +
583
+ "&outputFormat=application/json" +
584
+ "&maxFeatures=2500" +
585
+ "&srsName=" + this.map_srid +
586
+ "&typeName="
587
+ );
588
+ }
589
+
590
+ /**
591
+ * 获取数据源
592
+ * @param {Array} configs -数据源配置列表
593
+ *
594
+ * @returns {Object} 数据源对象
595
+ */
596
+ getGeoserverSources (configs) {
597
+ const dataSources = {};
598
+ configs.filter(src => !src.category).forEach((ds) => {
599
+ // 获取数据源对象
600
+ const sourceObj = this.getGeoserverSource(ds);
601
+ if (sourceObj) {
602
+ dataSources[ds.id] = sourceObj;
603
+ }
604
+ });
605
+
606
+ return dataSources;
607
+ }
608
+
609
+ /**
610
+ * 获取数据源对象
611
+ * @param {Object} options -数据源配置
612
+ *
613
+ * @returns {Object}
614
+ */
615
+ getGeoserverSource (options) {
616
+ switch (options.type) {
617
+ case 'raster': { // GeoServer-栅格瓦片服务
618
+ return {
619
+ type: options.type,
620
+ scheme: options.scheme || 'xyz',
621
+ tiles: [
622
+ this.joinWmtsUrl(options.geoLayer, options.workspace)
623
+ ],
624
+ minzoom: options.minZoom || 0,
625
+ maxzoom: options.maxZoom || 22
626
+ };
627
+ }
628
+ case 'vector': { // GeoServer-矢量瓦片服务
629
+ return {
630
+ type: options.type,
631
+ scheme: options.scheme || 'tms',
632
+ tiles: [
633
+ this.joinTmsUrl(options.geoLayer, options.workspace)
634
+ ],
635
+ minzoom: options.minZoom || 0,
636
+ maxzoom: options.maxZoom || 22
637
+ };
638
+ }
639
+ case 'geojson': { // GeoServer-WFS服务
640
+ return {
641
+ type: options.type,
642
+ data: this.joinWfsUrl(options.geoLayer, options.srid, options.fields)
643
+ };
644
+ }
645
+ default:
646
+ return null;
647
+ }
648
+ }
649
+
650
+ /**
651
+ * 添加自定义瓦片图层
652
+ */
653
+ addTiles (map) {
654
+ if (!map) return;
655
+
656
+ // 添加自定义瓦片图层
657
+ map.addSource('custom-tiles', {
658
+ type: 'raster',
659
+ tiles: ['/images/tiles/{z}/{x}/{y}.png'],
660
+ tileSize: 256
661
+ });
662
+
663
+ map.addLayer({
664
+ id: 'custom-tiles-layer',
665
+ type: 'raster',
666
+ source: 'custom-tiles',
667
+ minzoom: 0,
668
+ maxzoom: 22
669
+ });
670
+ }
671
+
672
+ /**
673
+ * 定位到当前位置
674
+ */
675
+ placePoint (map, location, callback) {
676
+ if (!map) return;
677
+ if (Array.isArray(location) && location.length === 2) {
678
+ map.setCenter(location)
679
+ map.setZoom(mapConfig.zoom);
680
+ } else {
681
+ navigator.geolocation.getCurrentPosition(
682
+ (position) => {
683
+ console.log('navigator.geolocation', position);
684
+ const point = {
685
+ lng: position.coords.longitude,
686
+ lat: position.coords.latitude
687
+ };
688
+
689
+ map.setCenter([point.lng, point.lat]);
690
+ map.setZoom(mapConfig.maxZoom);
691
+ callback && callback(point);
692
+ },
693
+ (error) => {
694
+ // 默认定位到地图中心点
695
+ const point = { lng: mapConfig.center[0], lat: mapConfig.center[1] };
696
+ map.setCenter([point.lng, point.lat]);
697
+ map.setZoom(mapConfig.maxZoom);
698
+ callback && callback(point);
699
+ },
700
+ { enableHighAccuracy: true }
701
+ );
702
+ }
703
+ }
704
+
705
+ /**
706
+ * @param data
707
+ */
708
+ addMarker (data) {
709
+ console.log('addMarker>>>>>>')
710
+ // 清除之前的标记图层和数据源
711
+ if (this.mbMap.getLayer('marker-point')) {
712
+ this.mbMap.removeLayer('marker-point');
713
+ }
714
+ if (this.mbMap.getSource('marker-point')) {
715
+ this.mbMap.removeSource('marker-point');
716
+ }
717
+
718
+ if (data.longitude && data.latitude) {
719
+ // 确保图标已加载到地图中
720
+ if (!this.mbMap.hasImage('add_marker_icon')) {
721
+ this.mbMap.loadImage(this.point_icon, (error, image) => {
722
+ if (error) throw error;
723
+ this.mbMap.addImage('add_marker_icon', image);
724
+ });
725
+ }
726
+
727
+ // 创建GeoJSON数据源
728
+ const geojson = {
729
+ type: 'FeatureCollection',
730
+ features: [{
731
+ type: 'Feature',
732
+ geometry: {
733
+ type: 'Point',
734
+ coordinates: [data.longitude, data.latitude]
735
+ },
736
+ properties: {}
737
+ }]
738
+ };
739
+
740
+ // 添加数据源
741
+ this.mbMap.addSource('marker-point', {
742
+ type: 'geojson',
743
+ data: geojson
744
+ });
745
+
746
+ // 添加图层显示标记点(使用自定义图标)
747
+ this.mbMap.addLayer({
748
+ id: 'marker-point',
749
+ type: 'symbol',
750
+ source: 'marker-point',
751
+ layout: {
752
+ 'icon-image': 'add_marker_icon',
753
+ 'icon-size': 1,
754
+ 'icon-offset': [4, -19]
755
+ }
756
+ });
757
+
758
+ // 设置地图中心点和缩放级别
759
+ this.mbMap.setCenter([data.longitude, data.latitude]);
760
+ this.mbMap.setZoom(mapConfig.maxZoom || 18);
761
+ }
762
+ }
763
+
764
+ /**
765
+ * 设置地图样式
766
+ */
767
+ setStyle (map) {
768
+ if (!map) return;
769
+
770
+ // 独立设置需要的mapbox内置样式
771
+ // 请使用我提供给你的base64 png图片 并进行addImage操作 iVBORw0KGgoAAAANSUhEUgAAAAsAAAArCAYAAABm8CLRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqkld9LAlEUxr93Z3fHXV1bE1JLMoheIh/6B/oHIiilICjohR76A4KgHnroTwh6CIKgICIzKCvNMnVdXd3ZnbnndIcZZ3bWEPoNDnfuOed855tzzz1XGGNgGIbxf8DpdF5omoZer/eXpmmYTCaIRCJot9vwer3wer0wmUwAgFarhXa7jXa7jVarhXa7jU6ng263i16vh36/DwAYDAaIRCKIRCJE0zQMDAzAarWCZVlgjIFSCkopKKXgeR6CICAIAjiOA8dxIIQAQghIkoQkSSBJEkRRhCiKEEURPM+DYRgwDAOGYUBRFCiKAkVRoKoqVFUFpRSapkHzPGiapnnDMAzDMAzDMIzf8M8BXq8XPp8PPp8Poij+9Xg8hkajgXq9jkajgXq9jnq9jmazCUIIGGOglILneQiCAEEQIAgCOI4Dx3EQBAEcxyEQCECWZUiShEAgALvdDovFAovFApvNBovFAkmSIEmSJEnSNVmW/1JV9Zym6XOaptc0TT/QNP1A0/QDTdMPNE0/0DR9T9P0PU3TdzRN39I0fUPT9DVN01c0TV/SNH1B0/Q5TdOnNE2f0DR9TNP0EU3ThzRNH9A0vU/T9B5N07s0Te/SNL1D0/Q2TdNbNE1v0jS9QdP0Ok3TazRNr9I0vULT9DJN00s0TS/SNL1A0/Q8TdNzNE3P0jQ9Q9P0NE3TUzRN/6Rp+jhN00c0TR/SNH1A0/Q+TdN7NE3v0jS9Q9P0Nk3TWzRNb9I0vUHT9DpN02s0Ta/SNL1C0/QyTdNLNE0v0jS9QNP0PE3TczRNz9I0PUMmk0kkEgnE43HE43HE43HEYjFomgZKKSilIIQAAARBAM/zEAQBgiCA53nwPA+e58HzPHiehyAI4DgOHMeB53lwHAeO48BxHHiehyAI4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOPM+D53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB/wD/BGAAuJZK3XZCtKsAAAAASUVORK5CYII=
772
+ // 添加基于base64的自定义图片资源
773
+ if (!map.hasImage('custom_circle_icon')) {
774
+ const img = new Image();
775
+ img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAArCAYAAABm8CLRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqkld9LAlEUxr93Z3fHXV1bE1JLMoheIh/6B/oHIiilICjohR76A4KgHnroTwh6CIKgICIzKCvNMnVdXd3ZnbnndIcZZ3bWEPoNDnfuOed855tzzz1XGGNgGIbxf8DpdF5omoZer/eXpmmYTCaIRCLot9vwer3wer0wmUwAgFarhXa7jXa7jVarhXa7jU6ng263i16vh36/DwAYDAaIRCKIRCJE0zQMDAzAarWCZVlgjIFSCkopKKXgeR6CICAIAjiOA8dxIIQAQghIkoQkSSBJEkRRhCiKEEURPM+DYRgwDAOGYUBRFCiKAkVRoKoqVFUFpRSapkHzPGiapnnDMAzDMIzDMIzf8M8BXq8PPp8PPp8Poij+9Xg8hkajgXq9jkajgXq9jnq9jmazCUIIGGOglILneQiCAEEQIAgCOI4Dx3EQBAEcxyEQCECWZUiShEAgALvdDovFAovFApvNBovFAkmSIEmSJEnSNVmW/1JV9Zym6XOaptc0TT/QNP1A0/QDTdMPNE0/0DR9T9P0PU3TdzRN39I0fUPT9DVN01c0TV/SNH1B0/Q5TdOnNE2f0DR9TNP0EU3ThzRNH9A0vU/T9B5N07s0Te/SNL1D0/Q2TdNbNE1v0jS9QdP0Ok3TazRNr9I0vULT9DJN00s0TS/SNL1A0/Q8TdNzNE3P0jQ9Q9P0NE3TUzRN/6Rp+jhN00c0TR/SNH1A0/Q+TdN7NE3v0jS9Q9P0Nk3TWzRNb9I0vUHT9DpN02s0Ta/SNL1C0/QyTdNLNE0v0jS9QNP0PE3TczRNz9I0PUMmk0kkEgnE43HE43HEYjFomgZKKSilIIQAAARBAM/zEAQBgiCA53nwPA+e58HzPHiehyAI4DgOHMeB53lwHAeO48BxHHiehyAI4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOPM+D53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB53nwPA9BECAIAjiOA8dx4DgOHMeB/wD/BGAAuJZK3XZCtKsAAAAASUVORK5CYII=';
776
+ img.onload = () => {
777
+ map.addImage('custom_circle_icon', img);
778
+ };
779
+ }
780
+
781
+ // Mapbox GL JS使用不同的样式设置方式
782
+ // 这里可以设置预定义样式或自定义样式
783
+ // map.setStyle('mapbox://styles/mapbox/streets-v11');
784
+ }
785
+
786
+ /**
787
+ * 设置地图缩放级别和中心点
788
+ */
789
+ setZoom (map, points, zoomLevel = null) {
790
+ if (!map || !points || points.length === 0) return;
791
+
792
+ let coordinates;
793
+ if (typeof points[0] === 'number' && points.length % 2 === 0) {
794
+ // 处理扁平数组格式
795
+ coordinates = [];
796
+ for (let i = 0; i < points.length; i += 2) {
797
+ coordinates.push([points[i], points[i + 1]]);
798
+ }
799
+ } else {
800
+ // 处理对象数组格式
801
+ coordinates = points.map(p => [p.longitude, p.latitude]);
802
+ }
803
+
804
+ // 计算所有坐标的边界框
805
+ const bounds = coordinates.reduce(
806
+ (bbox, coord) => {
807
+ return [
808
+ Math.min(bbox[0], coord[0]), // 最小经度
809
+ Math.min(bbox[1], coord[1]), // 最小纬度
810
+ Math.max(bbox[2], coord[0]), // 最大经度
811
+ Math.max(bbox[3], coord[1]) // 最大纬度
812
+ ];
813
+ },
814
+ [Infinity, Infinity, -Infinity, -Infinity] // 初始边界
815
+ );
816
+
817
+ if (zoomLevel) {
818
+ const center = [
819
+ (bounds[0] + bounds[2]) / 2,
820
+ (bounds[1] + bounds[3]) / 2
821
+ ];
822
+ map.setCenter(center);
823
+ map.setZoom(zoomLevel);
824
+ } else {
825
+ map.fitBounds(
826
+ [[bounds[0], bounds[1]], [bounds[2], bounds[3]]],
827
+ {
828
+ padding: 80,
829
+ maxZoom: 16,
830
+ duration: 800
831
+ }
832
+ );
833
+ }
834
+ }
835
+
836
+ /**
837
+ * 绘制巡检任务
838
+ */
839
+ drawPatrolTask (map, data) {
840
+ if (!map || !data) return;
841
+
842
+ const points = data.patrolPointDetailDTOs || [];
843
+ const lines = data.patrolTaskPlanPaths || [];
844
+
845
+ if (!points.length || !lines.length) return;
846
+
847
+ this.setZoom(map, points);
848
+
849
+ // 清除之前的图层
850
+ if (map.getLayer('patrol-points')) map.removeLayer('patrol-points');
851
+ if (map.getSource('patrol-points')) map.removeSource('patrol-points');
852
+ if (map.getLayer('patrol-lines')) map.removeLayer('patrol-lines');
853
+ if (map.getSource('patrol-lines')) map.removeSource('patrol-lines');
854
+
855
+ // 添加点数据
856
+ const pointFeatures = points.map(po => ({
857
+ type: 'Feature',
858
+ geometry: {
859
+ type: 'Point',
860
+ coordinates: [po.longitude, po.latitude]
861
+ },
862
+ properties: {
863
+ ...po
864
+ }
865
+ }));
866
+
867
+ map.addSource('patrol-points', {
868
+ type: 'geojson',
869
+ data: {
870
+ type: 'FeatureCollection',
871
+ features: pointFeatures
872
+ }
873
+ });
874
+
875
+ // 根据状态设置不同图标
876
+ map.addLayer({
877
+ id: 'patrol-points',
878
+ type: 'circle',
879
+ source: 'patrol-points',
880
+ paint: {
881
+ 'circle-radius': 6,
882
+ 'circle-color': [
883
+ 'match',
884
+ ['get', 'status'],
885
+ '正常', '#7ed321',
886
+ '异常', '#ff0000',
887
+ '未检', '#9b9b9b',
888
+ '#3a6bdb' // 默认颜色
889
+ ],
890
+ 'circle-stroke-width': 2,
891
+ 'circle-stroke-color': '#ffffff'
892
+ }
893
+ });
894
+
895
+ // 添加点标签
896
+ map.addLayer({
897
+ id: 'patrol-point-labels',
898
+ type: 'symbol',
899
+ source: 'patrol-points',
900
+ layout: {
901
+ 'text-field': ['get', 'patrolPoint'],
902
+ 'text-offset': [0, 1.5],
903
+ 'text-anchor': 'top'
904
+ },
905
+ paint: {
906
+ 'text-color': '#0093ff'
907
+ }
908
+ });
909
+
910
+ // 添加线数据
911
+ if (lines.length >= 2) {
912
+ const lineFeatures = [];
913
+ for (let i = 0; i < lines.length - 1; i++) {
914
+ lineFeatures.push({
915
+ type: 'Feature',
916
+ geometry: {
917
+ type: 'LineString',
918
+ coordinates: [
919
+ [lines[i].longitude, lines[i].latitude],
920
+ [lines[i + 1].longitude, lines[i + 1].latitude]
921
+ ]
922
+ },
923
+ properties: {
924
+ validate: lines[i].validate
925
+ }
926
+ });
927
+ }
928
+
929
+ map.addSource('patrol-lines', {
930
+ type: 'geojson',
931
+ data: {
932
+ type: 'FeatureCollection',
933
+ features: lineFeatures
934
+ }
935
+ });
936
+
937
+ map.addLayer({
938
+ id: 'patrol-lines',
939
+ type: 'line',
940
+ source: 'patrol-lines',
941
+ paint: {
942
+ 'line-color': [
943
+ 'match',
944
+ ['get', 'validate'],
945
+ 'valid', plan_color_valid,
946
+ plan_color_invalid
947
+ ],
948
+ 'line-width': 4
949
+ }
950
+ });
951
+ }
952
+ }
953
+
954
+ /**
955
+ * 绘制巡检路径
956
+ */
957
+ drawPatrol (map, data, pointField) {
958
+ if (!map || !data) return;
959
+ const taskUniqueId = data.id || data.patrolTaskId;
960
+ if (!taskUniqueId) return;
961
+
962
+ const points = data.patrolTaskPointTrackDTOs || [];
963
+ const lines = data.patrolTaskPlanPaths || [];
964
+ if (!points.length || !lines.length) return;
965
+
966
+ this.setZoom(map, points);
967
+
968
+ // 定义动态唯一ID
969
+ const pointSourceId = `patrol-track-points-${taskUniqueId}`;
970
+ const pointIconLayerId = `patrol-track-points-icons-${taskUniqueId}`;
971
+ const pointLabelLayerId = `patrol-track-point-labels-${taskUniqueId}`;
972
+ const lineSourceId = `patrol-track-lines-${taskUniqueId}`;
973
+ const lineLayerId = `patrol-track-lines-${taskUniqueId}`;
974
+
975
+ // 清除旧图层/数据源(使用动态ID)
976
+ if (map.getLayer(pointIconLayerId)) map.removeLayer(pointIconLayerId);
977
+ if (map.getLayer(pointLabelLayerId)) map.removeLayer(pointLabelLayerId);
978
+ if (map.getSource(pointSourceId)) map.removeSource(pointSourceId);
979
+ if (map.getLayer(lineLayerId)) map.removeLayer(lineLayerId);
980
+ if (map.getSource(lineSourceId)) map.removeSource(lineSourceId);
981
+
982
+ // 添加点数据
983
+ const pointFeatures = points.map(po => ({
984
+ type: 'Feature',
985
+ geometry: {
986
+ type: 'Point',
987
+ coordinates: [po.longitude, po.latitude]
988
+ },
989
+ properties: {
990
+ ...po
991
+ }
992
+ }));
993
+
994
+ // 在 addSource 中添加图标属性
995
+ map.addSource(pointSourceId, {
996
+ type: 'geojson',
997
+ data: {
998
+ type: 'FeatureCollection',
999
+ features: pointFeatures.map(feature => {
1000
+ let icon;
1001
+ const status = feature.properties.status;
1002
+ switch (status) {
1003
+ case '正常': icon = 'img_done'; break;
1004
+ case '异常': icon = 'img_error'; break;
1005
+ case '未检': icon = 'img_invalid'; break;
1006
+ default: icon = 'img_todo'; break;
1007
+ }
1008
+ return {
1009
+ ...feature,
1010
+ properties: { ...feature.properties, icon: icon }
1011
+ };
1012
+ })
1013
+ }
1014
+ });
1015
+
1016
+ // 在图层中使用图标
1017
+ map.addLayer({
1018
+ id: pointIconLayerId,
1019
+ type: 'symbol',
1020
+ source: pointSourceId,
1021
+ layout: {
1022
+ 'icon-image': ['get', 'icon'],
1023
+ 'icon-size': 1,
1024
+ 'icon-anchor': 'bottom'
1025
+ }
1026
+ });
1027
+
1028
+ // 添加点标签
1029
+ map.addLayer({
1030
+ id: pointLabelLayerId,
1031
+ type: 'symbol',
1032
+ source: pointSourceId,
1033
+ layout: {
1034
+ 'text-field': ['get', 'patrolPointName'],
1035
+ 'text-offset': [0, 1.5],
1036
+ 'text-anchor': 'top'
1037
+ },
1038
+ paint: { 'text-color': '#0093ff' }
1039
+ });
1040
+
1041
+ // 添加线数据,绑定任务信息到 properties
1042
+ if (lines.length >= 2) {
1043
+ const lineFeatures = [];
1044
+ for (let i = 0; i < lines.length - 1; i++) {
1045
+ lineFeatures.push({
1046
+ type: 'Feature',
1047
+ geometry: {
1048
+ type: 'LineString',
1049
+ coordinates: [
1050
+ [lines[i].longitude, lines[i].latitude],
1051
+ [lines[i + 1].longitude, lines[i + 1].latitude]
1052
+ ]
1053
+ },
1054
+ properties: {
1055
+ validate: lines[i].validate,
1056
+ taskId: taskUniqueId,
1057
+ taskInfo: {
1058
+ name: data.name,
1059
+ executeStatus: data.executeStatus,
1060
+ startTime: data.startTime,
1061
+ endTime: data.endTime,
1062
+ faultCount: data.faultCount,
1063
+ patrolPointCount: data.patrolPointCount,
1064
+ inspectedCount: data.inspectedCount,
1065
+ planPathLength: data.planPathLength,
1066
+ validPathLength: data.validPathLength
1067
+ }
1068
+ }
1069
+ });
1070
+ }
1071
+
1072
+ map.addSource(lineSourceId, {
1073
+ type: 'geojson',
1074
+ data: { type: 'FeatureCollection', features: lineFeatures }
1075
+ });
1076
+
1077
+ map.addLayer({
1078
+ id: lineLayerId,
1079
+ type: 'line',
1080
+ source: lineSourceId,
1081
+ paint: {
1082
+ 'line-color': ['match', ['get', 'validate'], 'valid', plan_color_valid, plan_color_invalid],
1083
+ 'line-width': 4,
1084
+ 'line-dasharray': [2, 2]
1085
+ },
1086
+ interactive: true // 开启线图层点击交互
1087
+ });
1088
+ }
1089
+
1090
+ // console.log('当前地图图层ID列表:', map.getStyle().layers.map(layer => layer.id));
1091
+ }
1092
+
1093
+ /**
1094
+ * 添加搜索功能
1095
+ * @param {string} containerId - 搜索输入框的容器ID
1096
+ * @param {Array} bounds - 搜索边界范围
1097
+ * @param {Function} callback - 回调函数
1098
+ */
1099
+ addSearch (containerId, bounds = [], callback) {
1100
+ // 检查容器ID是否存在
1101
+ if (!containerId) return;
1102
+
1103
+ // 通过容器ID获取输入框元素
1104
+ const inputElement = document.getElementById(containerId);
1105
+ inputElement.setAttribute('placeholder', '请输入搜索内容并通过↩︎进行查询')
1106
+ if (!inputElement) {
1107
+ console.error(`未找到ID为 ${containerId} 的输入框元素`);
1108
+ return;
1109
+ }
1110
+
1111
+ // 创建搜索结果容器并插入到输入框下方
1112
+ let resultListContainer = document.getElementById(`${containerId}-results`);
1113
+ if (!resultListContainer) {
1114
+ resultListContainer = document.createElement('div');
1115
+ resultListContainer.id = `${containerId}-results`;
1116
+ resultListContainer.className = 'search-results-container';
1117
+ inputElement.parentNode.insertBefore(resultListContainer, inputElement.nextSibling);
1118
+ }
1119
+
1120
+ // 默认隐藏搜索结果容器
1121
+ resultListContainer.style.display = 'none';
1122
+
1123
+ // 监听输入事件,当输入为空时清空并隐藏结果列表
1124
+ inputElement.addEventListener('input', (event) => {
1125
+ const keyword = event.target.value.trim();
1126
+ if (!keyword) {
1127
+ // 清空并隐藏搜索结果列表
1128
+ this.clearSearchResults(containerId);
1129
+ }
1130
+ });
1131
+
1132
+ inputElement.addEventListener('keydown', (event) => {
1133
+ if (event.key === 'Enter') {
1134
+ event.preventDefault();
1135
+ const keyword = inputElement.value.trim();
1136
+ if (keyword) {
1137
+ this.executeSearch(containerId, bounds, (poiList) => {
1138
+ // 展示搜索结果列表
1139
+ this.showSearchResults(containerId, poiList);
1140
+ callback && callback(poiList);
1141
+ });
1142
+ } else {
1143
+ // 如果输入为空,清空并隐藏结果列表
1144
+ this.clearSearchResults(containerId);
1145
+ }
1146
+ }
1147
+ });
1148
+
1149
+ // 添加输入框失去焦点时隐藏结果列表的事件
1150
+ inputElement.addEventListener('blur', () => {
1151
+ // 延迟隐藏,确保点击列表项时不会立即隐藏
1152
+ setTimeout(() => {
1153
+ if (resultListContainer) {
1154
+ resultListContainer.style.display = 'none';
1155
+ }
1156
+ }, 200);
1157
+ });
1158
+
1159
+ // 添加输入框获得焦点时显示结果列表的事件(如果有结果)
1160
+ inputElement.addEventListener('focus', () => {
1161
+ if (resultListContainer && resultListContainer.children.length > 0) {
1162
+ resultListContainer.style.display = 'block';
1163
+ }
1164
+ });
1165
+ }
1166
+
1167
+ /**
1168
+ * 清空并隐藏搜索结果列表
1169
+ * @param {string} containerId - 搜索输入框的容器ID
1170
+ */
1171
+ clearSearchResults (containerId) {
1172
+ const resultListContainer = document.getElementById(`${containerId}-results`);
1173
+ if (resultListContainer) {
1174
+ resultListContainer.innerHTML = '';
1175
+ resultListContainer.style.display = 'none';
1176
+ }
1177
+
1178
+ // 同时清除地图上的POI结果
1179
+ this.clearPOIResults();
1180
+ }
1181
+
1182
+ /**
1183
+ * 展示搜索结果列表
1184
+ * @param {string} containerId - 搜索输入框的容器ID
1185
+ * @param {Array} poiList - POI结果列表
1186
+ */
1187
+ showSearchResults (containerId, poiList) {
1188
+ const resultListContainer = document.getElementById(`${containerId}-results`);
1189
+ if (!resultListContainer) return;
1190
+
1191
+ // 清空容器内容
1192
+ resultListContainer.innerHTML = '';
1193
+
1194
+ if (!poiList || poiList.length === 0) {
1195
+ resultListContainer.innerHTML = '<div class="no-results">未找到相关结果</div>';
1196
+ resultListContainer.style.display = 'block';
1197
+ return;
1198
+ }
1199
+
1200
+ // 创建结果列表
1201
+ const resultList = document.createElement('ul');
1202
+ resultList.className = 'search-result-list';
1203
+
1204
+ // 为每个POI创建列表项
1205
+ poiList.forEach((poi, index) => {
1206
+ const listItem = document.createElement('li');
1207
+ listItem.className = 'search-result-item';
1208
+ listItem.dataset.index = index;
1209
+
1210
+ // 设置列表项内容
1211
+ listItem.innerHTML = `
1212
+ <div class="result-item-header">
1213
+ <span class="result-item-name">${poi.name || '未知名称'}</span>
1214
+ ${poi.type ? `<span class="result-item-type">${poi.type}</span>` : ''}
1215
+ </div>
1216
+ ${poi.address ? `<div class="result-item-address">${poi.address}</div>` : ''}
1217
+ ${poi.tel ? `<div class="result-item-tel">电话: ${poi.tel}</div>` : ''}
1218
+ `;
1219
+
1220
+ // 绑定点击事件,实现定位功能
1221
+ listItem.addEventListener('mousedown', (e) => {
1222
+ // 使用mousedown而不是click,避免blur事件先触发
1223
+ e.preventDefault();
1224
+ this.focusOnPOI(poi);
1225
+ });
1226
+
1227
+ resultList.appendChild(listItem);
1228
+ });
1229
+
1230
+ resultListContainer.appendChild(resultList);
1231
+ resultListContainer.style.display = 'block';
1232
+ }
1233
+
1234
+ /**
1235
+ * 定位到指定POI
1236
+ * @param {Object} poi - POI对象
1237
+ */
1238
+ focusOnPOI (poi) {
1239
+ if (!this.mbMap || !poi || !poi.longitude || !poi.latitude) return;
1240
+
1241
+ // 移动地图到POI位置
1242
+ this.mbMap.flyTo({
1243
+ center: [poi.longitude, poi.latitude],
1244
+ zoom: 16,
1245
+ essential: true // 动画不受 prefers-reduced-motion 影响
1246
+ });
1247
+
1248
+ // 高亮显示该POI(如果地图上已有POI结果图层)
1249
+ if (this.mbMap.getSource('poi-results')) {
1250
+ // 创建临时标记
1251
+ const popup = new mapboxgl.Popup({
1252
+ closeButton: false,
1253
+ className: 'poi-focus-popup'
1254
+ })
1255
+ .setLngLat([poi.longitude, poi.latitude])
1256
+ .setHTML(`<div class="poi-focus-content">${poi.name}</div>`)
1257
+ .addTo(this.mbMap);
1258
+
1259
+ // 3秒后自动关闭弹窗
1260
+ setTimeout(() => {
1261
+ if (popup.isOpen()) {
1262
+ popup.remove();
1263
+ }
1264
+ }, 3000);
1265
+ }
1266
+ }
1267
+
1268
+ executeSearch (containerId, bounds = [], callback) {
1269
+ // 通过容器ID获取输入框元素
1270
+ const inputElement = document.getElementById(containerId);
1271
+ if (!inputElement) {
1272
+ console.error(`未找到ID为 ${containerId} 的输入框元素`);
1273
+ return;
1274
+ }
1275
+ // 获取输入框的值作为搜索关键词
1276
+ const keyword = inputElement.value.trim();
1277
+ if (!keyword) return;
1278
+
1279
+ // 天地图POI搜索API URL (使用注释中的v2/search接口)
1280
+ const baseUrl = 'https://api.tianditu.gov.cn/v2/search';
1281
+
1282
+ // 构建请求参数 (按照注释中的格式)
1283
+ const postStr = {
1284
+ keyWord: keyword,
1285
+ level: 12,
1286
+ queryType: 1,
1287
+ start: 0,
1288
+ count: 100
1289
+ };
1290
+
1291
+ // 如果提供了搜索范围,则添加边界参数
1292
+ if (bounds && bounds.length === 4) {
1293
+ postStr.mapBound = `${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}`;
1294
+ } else {
1295
+ postStr.mapBound = `${mapConfig.mapExtent[0]},${mapConfig.mapExtent[1]},${mapConfig.mapExtent[2]},${mapConfig.mapExtent[3]}`;
1296
+ }
1297
+
1298
+ // 构建完整的请求URL
1299
+ const params = new URLSearchParams({
1300
+ postStr: JSON.stringify(postStr),
1301
+ type: 'query',
1302
+ tk: TokenUtils.TDT_token
1303
+ });
1304
+
1305
+ // 发送请求
1306
+ fetch(`${baseUrl}?${params.toString()}`)
1307
+ .then(response => response.json())
1308
+ .then(data => {
1309
+ if (data.pois) {
1310
+ // 处理返回的数据,转换为统一格式
1311
+ const poiList = data.pois.map(item => ({
1312
+ id: item.lonlat ? item.lonlat.split(',')[1] : '', // 使用lonlat生成ID
1313
+ name: item.name,
1314
+ address: item.address || '',
1315
+ longitude: item.lonlat ? parseFloat(item.lonlat.split(',')[0]) : 0,
1316
+ latitude: item.lonlat ? parseFloat(item.lonlat.split(',')[1]) : 0,
1317
+ tel: item.phone || '',
1318
+ type: item.type || ''
1319
+ }));
1320
+
1321
+ // 使用Mapbox绘制POI结果
1322
+ this.drawPOIResults(poiList);
1323
+
1324
+ callback && callback(poiList);
1325
+ } else {
1326
+ this.clearPOIResults();
1327
+ callback && callback([]);
1328
+ }
1329
+ })
1330
+ .catch(error => {
1331
+ console.error('天地图POI搜索失败:', error);
1332
+ this.clearPOIResults();
1333
+ callback && callback([]);
1334
+ });
1335
+ }
1336
+
1337
+ /**
1338
+ * 绘制POI搜索结果到地图上
1339
+ * @param {Array} poiList - POI结果列表
1340
+ */
1341
+ drawPOIResults (poiList) {
1342
+ if (!this.mbMap || !poiList || !poiList.length) return;
1343
+
1344
+ // 清除之前的结果图层
1345
+ this.clearPOIResults();
1346
+
1347
+ // 创建GeoJSON数据
1348
+ const geojson = {
1349
+ type: 'FeatureCollection',
1350
+ features: poiList.map(poi => ({
1351
+ type: 'Feature',
1352
+ geometry: {
1353
+ type: 'Point',
1354
+ coordinates: [poi.longitude, poi.latitude]
1355
+ },
1356
+ properties: {
1357
+ id: poi.id,
1358
+ name: poi.name,
1359
+ address: poi.address,
1360
+ tel: poi.tel,
1361
+ type: poi.type
1362
+ }
1363
+ }))
1364
+ };
1365
+
1366
+ // 添加数据源
1367
+ this.mbMap.addSource('poi-results', {
1368
+ type: 'geojson',
1369
+ data: geojson
1370
+ });
1371
+
1372
+ // 添加点图层
1373
+ this.mbMap.addLayer({
1374
+ id: 'poi-results',
1375
+ type: 'circle',
1376
+ source: 'poi-results',
1377
+ paint: {
1378
+ 'circle-radius': 8,
1379
+ 'circle-color': '#ff6b35',
1380
+ 'circle-stroke-width': 2,
1381
+ 'circle-stroke-color': '#ffffff'
1382
+ }
1383
+ });
1384
+
1385
+ // 添加标签图层
1386
+ this.mbMap.addLayer({
1387
+ id: 'poi-labels',
1388
+ type: 'symbol',
1389
+ source: 'poi-results',
1390
+ layout: {
1391
+ 'text-field': ['get', 'name'],
1392
+ 'text-offset': [0, 1.5],
1393
+ 'text-anchor': 'top',
1394
+ 'text-size': 12
1395
+ },
1396
+ paint: {
1397
+ 'text-color': '#333333',
1398
+ 'text-halo-color': '#ffffff',
1399
+ 'text-halo-width': 1
1400
+ }
1401
+ });
1402
+
1403
+ // 添加点击事件
1404
+ this.mbMap.on('click', 'poi-results', (e) => {
1405
+ const feature = e.features[0];
1406
+ new mapboxgl.Popup({ offset: [0, -15] })
1407
+ .setLngLat(feature.geometry.coordinates)
1408
+ .setHTML(` <div style="padding: 10px;">
1409
+ <h3 style="margin: 0 0 5px 0;">${feature.properties.name}</h3>
1410
+ <p style="margin: 5px 0;"><strong>地址:</strong> ${feature.properties.address || '无'}</p>
1411
+ <p style="margin: 5px 0;"><strong>电话:</strong> ${feature.properties.tel || '无'}</p>
1412
+ <p style="margin: 5px 0;"><strong>类型:</strong> ${feature.properties.type || '未知'}</p>
1413
+ </div>
1414
+ `)
1415
+ .addTo(this.mbMap);
1416
+ });
1417
+
1418
+ // 设置鼠标悬停效果
1419
+ this.mbMap.on('mouseenter', 'poi-results', () => {
1420
+ this.mbMap.getCanvas().style.cursor = 'pointer';
1421
+ });
1422
+
1423
+ this.mbMap.on('mouseleave', 'poi-results', () => {
1424
+ this.mbMap.getCanvas().style.cursor = '';
1425
+ });
1426
+ }
1427
+
1428
+ /**
1429
+ * 清除POI搜索结果
1430
+ */
1431
+ clearPOIResults () {
1432
+ if (!this.mbMap) return;
1433
+
1434
+ if (this.mbMap.getLayer('poi-results')) {
1435
+ this.mbMap.removeLayer('poi-results');
1436
+ }
1437
+ if (this.mbMap.getLayer('poi-labels')) {
1438
+ this.mbMap.removeLayer('poi-labels');
1439
+ }
1440
+ if (this.mbMap.getSource('poi-results')) {
1441
+ this.mbMap.removeSource('poi-results');
1442
+ }
1443
+
1444
+ // 移除事件监听器
1445
+ this.mbMap.off('click', 'poi-results');
1446
+ this.mbMap.off('mouseenter', 'poi-results');
1447
+ this.mbMap.off('mouseleave', 'poi-results');
1448
+ }
1449
+
1450
+ /**
1451
+ * 转换数据点为地图点
1452
+ */
1453
+ getMapboxPoints (data) {
1454
+ if (!data) return [];
1455
+ return data.map(item => [item.longitude, item.latitude]);
1456
+ }
1457
+
1458
+ /**
1459
+ * 标记点位并支持拖拽移动
1460
+ * @param {Object} map - 地图实例
1461
+ * @param {Array|Object} points - 点位数据
1462
+ * @param {Boolean} disableDrag - 是否禁用拖拽功能
1463
+ * @param {Function} onDragEnd - 拖拽结束回调函数,返回更新后的点位信息
1464
+ */
1465
+ hitPoint (map, points, disableDrag = true, onDragEnd) {
1466
+ if (!map) return;
1467
+
1468
+ let pointsArray = Array.isArray(points) ? points : [points];
1469
+
1470
+ // 创建点数据源
1471
+ const features = pointsArray
1472
+ .filter(point => point.longitude && point.latitude)
1473
+ .map(point => ({
1474
+ type: 'Feature',
1475
+ geometry: {
1476
+ type: 'Point',
1477
+ coordinates: [point.longitude, point.latitude]
1478
+ },
1479
+ properties: {
1480
+ id: point.id,
1481
+ patrolPoint: point.patrolPoint
1482
+ }
1483
+ }));
1484
+
1485
+ // 添加数据源和图层
1486
+ if (!map.getSource('hit-points')) {
1487
+ map.addSource('hit-points', {
1488
+ type: 'geojson',
1489
+ data: {
1490
+ type: 'FeatureCollection',
1491
+ features: features
1492
+ }
1493
+ });
1494
+
1495
+ map.addLayer({
1496
+ id: 'hit-points',
1497
+ type: 'circle',
1498
+ source: 'hit-points',
1499
+ paint: {
1500
+ 'circle-radius': 6,
1501
+ 'circle-color': '#3a6bdb',
1502
+ 'circle-stroke-width': 2,
1503
+ 'circle-stroke-color': '#ffffff'
1504
+ }
1505
+ });
1506
+
1507
+ // 添加标签
1508
+ map.addLayer({
1509
+ id: 'hit-point-labels',
1510
+ type: 'symbol',
1511
+ source: 'hit-points',
1512
+ layout: {
1513
+ 'text-field': ['get', 'patrolPoint'],
1514
+ 'text-offset': [0, 1.5],
1515
+ 'text-anchor': 'top'
1516
+ },
1517
+ paint: {
1518
+ 'text-color': '#0093ff'
1519
+ }
1520
+ });
1521
+
1522
+ // 如果不禁用拖拽,则添加拖拽功能
1523
+ if (!disableDrag) {
1524
+ this._enablePointDragging(map, onDragEnd);
1525
+ }
1526
+
1527
+ // 将 disableDrag 状态存储在图层上,便于后续更新时判断
1528
+ map.getLayer('hit-points')._disableDrag = disableDrag;
1529
+ } else {
1530
+ // 更新数据
1531
+ map.getSource('hit-points').setData({
1532
+ type: 'FeatureCollection',
1533
+ features: features
1534
+ });
1535
+
1536
+ // 检查是否需要更新拖拽功能状态
1537
+ const hitPointsLayer = map.getLayer('hit-points');
1538
+ if (hitPointsLayer && hitPointsLayer._disableDrag !== disableDrag) {
1539
+ if (!disableDrag) {
1540
+ // 启用拖拽功能
1541
+ this._enablePointDragging(map, onDragEnd);
1542
+ } else {
1543
+ // 禁用拖拽功能,移除相关事件监听器
1544
+ map.off('mousedown', 'hit-points');
1545
+ map.off('mouseenter', 'hit-points');
1546
+ map.off('mouseleave', 'hit-points');
1547
+ }
1548
+ // 更新状态
1549
+ hitPointsLayer._disableDrag = disableDrag;
1550
+ }
1551
+ }
1552
+ }
1553
+
1554
+ /**
1555
+ * 启用点位拖拽功能
1556
+ * @param {Object} map - 地图实例
1557
+ * @param {Function} onDragEnd - 拖拽结束回调函数
1558
+ */
1559
+ _enablePointDragging (map, onDragEnd) {
1560
+ let isDragging = false;
1561
+ let dragTarget = null;
1562
+ let originalPosition = null;
1563
+ let tooltip = null; // 添加tooltip变量
1564
+
1565
+ // 鼠标按下事件 - 开始拖拽
1566
+ map.on('mousedown', 'hit-points', (e) => {
1567
+ this.enableScrollWheelZoom(false)
1568
+ map.dragPan.disable();
1569
+ isDragging = true;
1570
+ dragTarget = e.features[0];
1571
+ originalPosition = dragTarget.geometry.coordinates.slice();
1572
+
1573
+ // 设置鼠标样式
1574
+ map.getCanvas().style.cursor = 'grabbing';
1575
+
1576
+ // 为dragTarget增加一个tooltip
1577
+ tooltip = new mapboxgl.Popup({
1578
+ closeButton: false,
1579
+ closeOnClick: false,
1580
+ className: 'drag-tooltip'
1581
+ })
1582
+ .setLngLat(dragTarget.geometry.coordinates)
1583
+ .setHTML('<div>拖拽中...</div>')
1584
+ .addTo(map);
1585
+ });
1586
+
1587
+ // 鼠标移动事件 - 执行拖拽
1588
+ map.on('mousemove', (e) => {
1589
+ if (!isDragging || !dragTarget) return;
1590
+
1591
+ // 更新点位位置
1592
+ const updatedFeatures = map.getSource('hit-points')._data.features.map(feature => {
1593
+ if (feature.properties.id === dragTarget.properties.id) {
1594
+ return {
1595
+ ...feature,
1596
+ geometry: {
1597
+ ...feature.geometry,
1598
+ coordinates: [e.lngLat.lng, e.lngLat.lat]
1599
+ }
1600
+ };
1601
+ }
1602
+ return feature;
1603
+ });
1604
+
1605
+ // 更新数据源
1606
+ map.getSource('hit-points').setData({
1607
+ type: 'FeatureCollection',
1608
+ features: updatedFeatures
1609
+ });
1610
+
1611
+ // 更新tooltip位置
1612
+ if (tooltip) {
1613
+ tooltip.setLngLat([e.lngLat.lng, e.lngLat.lat]);
1614
+ }
1615
+ });
1616
+
1617
+ // 鼠标释放事件 - 结束拖拽
1618
+ map.on('mouseup', () => {
1619
+ // 移除tooltip
1620
+ if (tooltip) {
1621
+ tooltip.remove();
1622
+ tooltip = null;
1623
+ }
1624
+ if (isDragging && dragTarget) {
1625
+ isDragging = false;
1626
+
1627
+ // 获取更新后的点位数据
1628
+ const updatedFeatures = map.getSource('hit-points')._data.features;
1629
+ const updatedPoint = updatedFeatures.find(
1630
+ feature => feature.properties.id === dragTarget.properties.id
1631
+ );
1632
+
1633
+ // 调用回调函数返回更新后的点位信息
1634
+ if (onDragEnd && updatedPoint) {
1635
+ onDragEnd({
1636
+ id: updatedPoint.properties.id,
1637
+ patrolPoint: updatedPoint.properties.patrolPoint,
1638
+ longitude: updatedPoint.geometry.coordinates[0],
1639
+ latitude: updatedPoint.geometry.coordinates[1],
1640
+ originalLongitude: originalPosition[0],
1641
+ originalLatitude: originalPosition[1]
1642
+ });
1643
+ }
1644
+
1645
+ dragTarget = null;
1646
+ originalPosition = null;
1647
+
1648
+ this.enableScrollWheelZoom()
1649
+ map.dragPan.enable();
1650
+ }
1651
+
1652
+ // 恢复鼠标样式
1653
+ map.getCanvas().style.cursor = '';
1654
+ });
1655
+
1656
+ // 鼠标离开地图时也结束拖拽
1657
+ map.on('mouseleave', () => {
1658
+ if (isDragging) {
1659
+ isDragging = false;
1660
+ dragTarget = null;
1661
+ originalPosition = null;
1662
+
1663
+ // 移除tooltip
1664
+ if (tooltip) {
1665
+ tooltip.remove();
1666
+ tooltip = null;
1667
+ }
1668
+
1669
+ map.getCanvas().style.cursor = '';
1670
+ }
1671
+ });
1672
+
1673
+ // 设置鼠标悬停样式
1674
+ map.on('mouseenter', 'hit-points', () => {
1675
+ map.getCanvas().style.cursor = 'grab';
1676
+ });
1677
+
1678
+ map.on('mouseleave', 'hit-points', () => {
1679
+ if (!isDragging) {
1680
+ map.getCanvas().style.cursor = '';
1681
+ }
1682
+ });
1683
+ }
1684
+
1685
+ /**
1686
+ * 绘制线
1687
+ */
1688
+ renderLine (map, points, options) {
1689
+ if (!map || !points || points.length < 2) return;
1690
+
1691
+ const coordinates = points.map(p => [p.lng, p.lat]);
1692
+
1693
+ const config = {
1694
+ enableEditing: false,
1695
+ enableClicking: true,
1696
+ strokeWeight: 5,
1697
+ strokeOpacity: 0.65,
1698
+ ...options
1699
+ };
1700
+
1701
+ // 创建线数据源
1702
+ if (!map.getSource('custom-line')) {
1703
+ map.addSource('custom-line', {
1704
+ type: 'geojson',
1705
+ data: {
1706
+ type: 'Feature',
1707
+ geometry: {
1708
+ type: 'LineString',
1709
+ coordinates: coordinates
1710
+ },
1711
+ properties: {}
1712
+ }
1713
+ });
1714
+
1715
+ map.addLayer({
1716
+ id: 'custom-line',
1717
+ type: 'line',
1718
+ source: 'custom-line',
1719
+ paint: {
1720
+ 'line-color': '#3a6bdb',
1721
+ 'line-width': config.strokeWeight,
1722
+ 'line-opacity': config.strokeOpacity
1723
+ }
1724
+ });
1725
+ } else {
1726
+ // 更新数据
1727
+ map.getSource('custom-line').setData({
1728
+ type: 'Feature',
1729
+ geometry: {
1730
+ type: 'LineString',
1731
+ coordinates: coordinates
1732
+ },
1733
+ properties: {}
1734
+ });
1735
+ }
1736
+
1737
+ return map.getLayer('custom-line');
1738
+ }
1739
+
1740
+ /**
1741
+ * controls
1742
+ */
1743
+ /**
1744
+ * 启用滚轮缩放
1745
+ * @param {boolean} isOpen 是否开启控制
1746
+ */
1747
+ enableScrollWheelZoom (isOpen = true) {
1748
+ // 进行mapboxgl的scroll(wheel)事件的控制
1749
+ if (!this.mbMap) return;
1750
+
1751
+ if (isOpen) {
1752
+ this.mbMap.scrollZoom.enable();
1753
+ } else {
1754
+ this.mbMap.scrollZoom.disable();
1755
+ }
1756
+ }
1757
+
1758
+ /**
1759
+ * 绘制带中心点标注的经纬度网格
1760
+ * @param {Object} map - 地图实例
1761
+ * @param {Object} options - 网格配置选项
1762
+ */
1763
+ _drawGridWithCenterLabels (map, options = {}) {
1764
+ if (!map) return;
1765
+
1766
+ const {
1767
+ interval = 1,
1768
+ color = '#0066cc',
1769
+ width = 1,
1770
+ showLabels = true,
1771
+ showCenterLabels = true
1772
+ } = options;
1773
+
1774
+ const features = [];
1775
+ const labelFeatures = [];
1776
+ const centerLabelFeatures = [];
1777
+
1778
+ // 中国范围经纬度网格
1779
+ // 73.55, 3.85, 135.08, 53.55
1780
+ const minLng = mapConfig.mapExtent[0], maxLng = mapConfig.mapExtent[2];
1781
+ const minLat = mapConfig.mapExtent[1], maxLat = mapConfig.mapExtent[3];
1782
+
1783
+ // 经线
1784
+ for (let lng = Math.ceil(minLng); lng <= Math.floor(maxLng); lng += interval) {
1785
+ const coordinates = [];
1786
+ for (let lat = minLat; lat <= maxLat; lat += 0.1) {
1787
+ coordinates.push([lng, lat]);
1788
+ }
1789
+ features.push({
1790
+ type: 'Feature',
1791
+ geometry: {
1792
+ type: 'LineString',
1793
+ coordinates: coordinates
1794
+ },
1795
+ properties: {
1796
+ type: 'longitude',
1797
+ value: lng
1798
+ }
1799
+ });
1800
+
1801
+ // 添加经度标签
1802
+ if (showLabels) {
1803
+ labelFeatures.push({
1804
+ type: 'Feature',
1805
+ geometry: {
1806
+ type: 'Point',
1807
+ coordinates: [lng, minLat]
1808
+ },
1809
+ properties: {
1810
+ text: `${lng}°`
1811
+ }
1812
+ });
1813
+ }
1814
+ }
1815
+
1816
+ // 纬线
1817
+ for (let lat = Math.ceil(minLat); lat <= Math.floor(maxLat); lat += interval) {
1818
+ const coordinates = [];
1819
+ for (let lng = minLng; lng <= maxLng; lng += 0.1) {
1820
+ coordinates.push([lng, lat]);
1821
+ }
1822
+ features.push({
1823
+ type: 'Feature',
1824
+ geometry: {
1825
+ type: 'LineString',
1826
+ coordinates: coordinates
1827
+ },
1828
+ properties: {
1829
+ type: 'latitude',
1830
+ value: lat
1831
+ }
1832
+ });
1833
+
1834
+ // 添加纬度标签
1835
+ if (showLabels) {
1836
+ labelFeatures.push({
1837
+ type: 'Feature',
1838
+ geometry: {
1839
+ type: 'Point',
1840
+ coordinates: [minLng, lat]
1841
+ },
1842
+ properties: {
1843
+ text: `${lat}°`
1844
+ }
1845
+ });
1846
+ }
1847
+ }
1848
+
1849
+ // 添加网格中心点标签(显示经纬度区间)
1850
+ if (showCenterLabels) {
1851
+ for (let lng = Math.ceil(minLng); lng < Math.floor(maxLng); lng += interval) {
1852
+ for (let lat = Math.ceil(minLat); lat < Math.floor(maxLat); lat += interval) {
1853
+ // 计算网格中心点
1854
+ const centerLng = lng + interval / 2;
1855
+ const centerLat = lat + interval / 2;
1856
+
1857
+ // 创建区间标签文本
1858
+ const label = `${lng}°~${lng + interval}°\n${lat}°~${lat + interval}°`;
1859
+
1860
+ centerLabelFeatures.push({
1861
+ type: 'Feature',
1862
+ geometry: {
1863
+ type: 'Point',
1864
+ coordinates: [centerLng, centerLat]
1865
+ },
1866
+ properties: {
1867
+ text: label
1868
+ }
1869
+ });
1870
+ }
1871
+ }
1872
+ }
1873
+
1874
+ // 添加网格线数据源和图层
1875
+ if (!map.getSource('longitude-latitude-grid')) {
1876
+ map.addSource('longitude-latitude-grid', {
1877
+ type: 'geojson',
1878
+ data: {
1879
+ type: 'FeatureCollection',
1880
+ features: features
1881
+ }
1882
+ });
1883
+
1884
+ map.addLayer({
1885
+ id: 'longitude-latitude-grid',
1886
+ type: 'line',
1887
+ source: 'longitude-latitude-grid',
1888
+ paint: {
1889
+ 'line-color': color,
1890
+ 'line-width': width,
1891
+ 'line-opacity': 0.6,
1892
+ 'line-dasharray': [2, 2]
1893
+ }
1894
+ });
1895
+ } else {
1896
+ map.getSource('longitude-latitude-grid').setData({
1897
+ type: 'FeatureCollection',
1898
+ features: features
1899
+ });
1900
+ }
1901
+
1902
+ // 添加边界标签数据源和图层
1903
+ if (showLabels && labelFeatures.length > 0) {
1904
+ if (!map.getSource('grid-labels')) {
1905
+ map.addSource('grid-labels', {
1906
+ type: 'geojson',
1907
+ data: {
1908
+ type: 'FeatureCollection',
1909
+ features: labelFeatures
1910
+ }
1911
+ });
1912
+
1913
+ map.addLayer({
1914
+ id: 'grid-labels',
1915
+ type: 'symbol',
1916
+ source: 'grid-labels',
1917
+ layout: {
1918
+ 'text-field': ['get', 'text'],
1919
+ 'text-size': 16,
1920
+ 'text-offset': [0, 1]
1921
+ },
1922
+ paint: {
1923
+ 'text-color': '#ff6b35',
1924
+ 'text-halo-color': '#ffffff',
1925
+ 'text-halo-width': 1,
1926
+ }
1927
+ });
1928
+ } else {
1929
+ map.getSource('grid-labels').setData({
1930
+ type: 'FeatureCollection',
1931
+ features: labelFeatures
1932
+ });
1933
+ }
1934
+ }
1935
+
1936
+ // 添加中心点区间标签数据源和图层(仅在层级10及以上显示)
1937
+ if (showCenterLabels && centerLabelFeatures.length > 0) {
1938
+ if (!map.getSource('grid-center-labels')) {
1939
+ map.addSource('grid-center-labels', {
1940
+ type: 'geojson',
1941
+ data: {
1942
+ type: 'FeatureCollection',
1943
+ features: centerLabelFeatures
1944
+ }
1945
+ });
1946
+
1947
+ map.addLayer({
1948
+ id: 'grid-center-labels',
1949
+ type: 'symbol',
1950
+ source: 'grid-center-labels',
1951
+ layout: {
1952
+ 'text-field': ['get', 'text'],
1953
+ 'text-size': 16,
1954
+ 'text-offset': [0, 0],
1955
+ 'text-anchor': 'center',
1956
+ 'text-justify': 'center',
1957
+ },
1958
+ paint: {
1959
+ 'text-color': '#ff6b35',
1960
+ 'text-halo-color': '#ffffff',
1961
+ 'text-halo-width': 1,
1962
+ }
1963
+ });
1964
+ } else {
1965
+ map.getSource('grid-center-labels').setData({
1966
+ type: 'FeatureCollection',
1967
+ features: centerLabelFeatures
1968
+ });
1969
+ }
1970
+ }
1971
+ }
1972
+
1973
+ /**
1974
+ * 清除经纬度网格(包括中心点标签)
1975
+ * @param {Object} map - 地图实例
1976
+ */
1977
+ clearGridWithCenterLabels (map) {
1978
+ if (!map) return;
1979
+
1980
+ // 清除网格线
1981
+ if (map.getLayer('longitude-latitude-grid')) {
1982
+ map.removeLayer('longitude-latitude-grid');
1983
+ }
1984
+ if (map.getSource('longitude-latitude-grid')) {
1985
+ map.removeSource('longitude-latitude-grid');
1986
+ }
1987
+
1988
+ // 清除边界标签
1989
+ if (map.getLayer('grid-labels')) {
1990
+ map.removeLayer('grid-labels');
1991
+ }
1992
+ if (map.getSource('grid-labels')) {
1993
+ map.removeSource('grid-labels');
1994
+ }
1995
+
1996
+ // 清除中心点标签
1997
+ if (map.getLayer('grid-center-labels')) {
1998
+ map.removeLayer('grid-center-labels');
1999
+ }
2000
+ if (map.getSource('grid-center-labels')) {
2001
+ map.removeSource('grid-center-labels');
2002
+ }
2003
+ }
2004
+
2005
+ /**
2006
+ * 计算线段中间点
2007
+ * @param start
2008
+ * @param end
2009
+ * @returns {{lng, lat}}
2010
+ */
2011
+ countMidFromLine(start, end) {
2012
+ return {
2013
+ lng: (start.lng + end.lng) / 2,
2014
+ lat: (start.lat + end.lat) / 2
2015
+ };
2016
+ }
2017
+ /**
2018
+ * 清除所有非底图图层
2019
+ */
2020
+
2021
+ clearOverlays () {
2022
+ // 批量清除所有巡检相关的动态图层(ID包含patrol-track-前缀)
2023
+ const layers = map.getStyle().layers;
2024
+ layers.forEach(layer => {
2025
+ if (layer.id.includes('patrol-track-')) {
2026
+ map.removeLayer(layer.id);
2027
+ if (layer.source && layer.source.includes('patrol-track-')) {
2028
+ map.removeSource(layer.source);
2029
+ }
2030
+ }
2031
+ });
2032
+ }
2033
+ }
2034
+
2035
+ // 导出单例实例
2036
+ const mapboxNative = new MapboxNative();
2037
+ export default mapboxNative;