pointLayer.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import * as KMap from '@/utils/ol-map/KMap';
  2. import Style from "ol/style/Style";
  3. import Icon from "ol/style/Icon";
  4. import { newPoint } from "@/utils/map.js";
  5. import flyPointIcon from "@/assets/images/warningHome/chat/fly-point.png";
  6. /**
  7. *
  8. */
  9. class pointLayer {
  10. constructor(kmap) {
  11. this.kmap = kmap
  12. // 位置图标
  13. this.pointLayer = new KMap.VectorLayer("pointLayer", 1000, {
  14. visible: false,
  15. style: () => {
  16. return new Style({
  17. image: new Icon({
  18. // 使用打包器可识别的静态资源路径
  19. src: flyPointIcon,
  20. scale: 0.6,
  21. }),
  22. });
  23. },
  24. });
  25. this.kmap.addLayer(this.pointLayer.layer);
  26. this.setMapPoint()
  27. }
  28. setMapPoint() {
  29. // 图标点位
  30. let point = [
  31. {
  32. id: 1,
  33. wkt: "POINT(110.937533572 21.9752048347)",
  34. url: "1",
  35. },
  36. {
  37. id: 2,
  38. wkt: "POINT(111.006303846 22.0427499)",
  39. url: "2",
  40. },
  41. {
  42. id: 3,
  43. wkt: "POINT(110.952463176 22.0266637782)",
  44. url: "3",
  45. },
  46. {
  47. id: 4,
  48. wkt: "POINT(110.964404259 21.954198378)",
  49. url: "4",
  50. },
  51. {
  52. id: 6,
  53. wkt: "POINT(110.870809782 22.0103192249)",
  54. url: "5",
  55. },
  56. {
  57. id: 8,
  58. wkt: "POINT(111.004240017 22.0377065354)",
  59. url: "6",
  60. },
  61. {
  62. id: 9,
  63. wkt: "POINT(110.907575135 21.9370288761)",
  64. url: "7",
  65. },
  66. {
  67. id: 10,
  68. wkt: "POINT(110.861455112 21.9521709844)",
  69. url: "8",
  70. },
  71. {
  72. id: 11,
  73. wkt: "POINT(110.941859265 21.9810418917)",
  74. url: "9",
  75. },
  76. {
  77. id: 12,
  78. wkt: "POINT(110.85275219 22.0177644506)",
  79. url: "10",
  80. },
  81. {
  82. id: 13,
  83. wkt: "POINT(110.937319394 22.0469353146)",
  84. url: "11",
  85. },
  86. {
  87. id: 15,
  88. wkt: "POINT(111.002916366 22.0546410706)",
  89. url: "12",
  90. },
  91. ]
  92. point.map((item) => {
  93. let point = newPoint(item, 'wkt');
  94. this.pointLayer.addFeature(point)
  95. })
  96. this.pointLayer.layer.setVisible(false);
  97. }
  98. showPoint() {
  99. // 显示点位图层
  100. this.pointLayer.layer.setVisible(true);
  101. // 使用 source 计算范围,VectorLayer 本身没有 getExtent 方法
  102. const extent = this.pointLayer.source.getExtent();
  103. if (extent && extent[0] !== Infinity) {
  104. // 通过 kmap(KMap.Map 实例)来缩放到点位范围
  105. this.kmap.fit(extent, [100, 100, 100, 100]);
  106. }
  107. }
  108. hidePoint() {
  109. this.pointLayer.layer.setVisible(false);
  110. }
  111. }
  112. export default pointLayer;