gis-map-xinjiang 0.0.2 → 0.0.4

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.
@@ -1,315 +0,0 @@
1
- import { ref } from 'vue';
2
- import { Feature } from "ol";
3
- import { Vector as VectorLayer, Heatmap as HeatmapLayer } from "ol/layer";
4
- import { Vector as VectorSource, Cluster } from "ol/source";
5
- import { extend } from "ol/extent";
6
- import { Point, LineString } from "ol/geom";
7
- import GeoJSON from "ol/format/GeoJSON";
8
- import * as turf from "@turf/turf";
9
- import {
10
- Circle,
11
- Fill,
12
- Stroke,
13
- Style,
14
- Text,
15
- Icon,
16
- RegularShape,
17
- } from "ol/style";
18
- import { fromLonLat } from "ol/proj";
19
-
20
- // 创建可组合函数替代原来的 mixin
21
- export function useUtils(mapRef, checkedListRef) {
22
- // 响应式数据
23
- const gongganTextLayerShow = ref(false);
24
- const gongganTextLayerList = ref([]);
25
- const sourceWithTextList = ref([]);
26
-
27
- // 方法
28
- const zoomInBylatlon = (latlon, zoom) => {
29
- mapRef.value.getView().animate({
30
- center: latlon,
31
- zoom: zoom,
32
- duration: 800,
33
- });
34
- };
35
-
36
- const addPointByArr = (pointsObj, id, isCluster, customLayerRef) => {
37
- let arry = mapRef.value.getLayers().getArray();
38
- let foundLayer = null;
39
- for (let i = 0; i < arry.length; i++) {
40
- let layer = arry[i];
41
- if (layer.get("layerName") === id) {
42
- foundLayer = layer;
43
- break;
44
- }
45
- }
46
- let sourceWithoutText = new VectorSource();
47
- pointsObj.pointList.forEach((data) => {
48
- let feature = new Feature({
49
- title: "要素点",
50
- // geometry: new Point(fromLonLat([data.longitude, data.latitude])),
51
- geometry: new Point([data.longitude, data.latitude]),
52
- });
53
- feature.set("type", data.type);
54
- feature.set("iconUrl", data.iconUrl);
55
- feature.set("popoup", data.popoup);
56
- feature.set("otherInfo", data.otherInfo);
57
- feature.set("longitude", data.longitude);
58
- feature.set("latitude", data.latitude);
59
- feature.set("isVisible", false);
60
- feature.set("layerId", id);
61
- let styleWithoutText = [
62
- new Style({
63
- image: new Icon({
64
- src: data.iconUrl,
65
- scale: data.scale,
66
- offset: data.offset,
67
- offsetOrigin: "bottom-right",
68
- size: data.size,
69
- }),
70
- }),
71
- new Style({
72
- text: new Text({
73
- font: data.textFontSize || "14px sans-serif",
74
- fill: new Fill({ color: data.textColor || "rgb(255, 255, 255)" }), // 文字颜色
75
- stroke: new Stroke({ color: "rgb(33, 33, 33)", width: 0 }), // 文字描边
76
- backgroundFill: new Fill({ color: data.textBGColor || "rgba(94, 110, 158, 0.6)" }), // 背景色(支持透明度)
77
- backgroundStroke: new Stroke({
78
- color: "rgba(173, 173, 173, 0.1)",
79
- width: 1,
80
- }), // 可选:背景边框
81
- text: data.name || "",
82
- textAlign: "center",
83
- textBaseline: "bottom",
84
- offsetX: data.textOffsetX || 0,
85
- offsetY: data.textOffsetY || 40,
86
- overflow: true,
87
- padding: [0, 2, 0, 2], // 上、右、下、左 padding,可以调整
88
- }),
89
- zIndex: 60,
90
- }),
91
- ];
92
- feature.setStyle(styleWithoutText);
93
- sourceWithoutText.addFeature(feature);
94
- });
95
- if (isCluster) {
96
- customLayerRef.value = new VectorLayer({
97
- layerName: id,
98
- zIndex: 999,
99
- style: function (feature) {
100
- const size = feature.get("features").length;
101
- let style;
102
- if (size > 1) {
103
- let circleStyle = new Style({
104
- image: new RegularShape({
105
- fill: new Fill({
106
- color: [233, 188, 38, 0.7],
107
- }),
108
- stroke: new Stroke({
109
- color: [233, 188, 38, 1],
110
- width: 1,
111
- }),
112
- points: 6,
113
- radius: 27,
114
- }),
115
- text: new Text({
116
- fill: new Fill({
117
- color: "#ffffff",
118
- }),
119
- offsetY: 2,
120
- font: "bold 16px sans-serif",
121
- text: size.toString(),
122
- }),
123
- });
124
- let imageStyle1 = new Style({
125
- image: new Icon({
126
- src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCAzNCA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IiYjMjMwOyYjMTUwOyYjMTg5OyYjMjI5OyYjMTgzOyYjMTY1OyIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ0M18zNDkpIj4KPGcgaWQ9IiYjMjMzOyYjMTYxOyYjMTgxOyYjMjMzOyYjMTU3OyYjMTYyOy0xIj4KPGcgaWQ9IiYjMjMzOyYjMTY2OyYjMTUwOyYjMjMzOyYjMTYxOyYjMTgxOy0mIzIzMTsmIzE1MzsmIzE4OTsmIzIzMjsmIzEzNzsmIzE3ODsmIzIyOTsmIzE4NTsmIzE3OTsmIzIzMzsmIzE1NzsmIzE2MjsxIj4KPGcgaWQ9IiYjMjI5OyYjMTU1OyYjMTkwOyYjMjMwOyYjMTYwOyYjMTM1OyI+CjxnIGlkPSImIzIzMDsmIzE1MDsmIzE4OTsmIzIyOTsmIzE4MzsmIzE2NTtfMiI+CjxnIGlkPSImIzIzMDsmIzE2NDsmIzE3MzsmIzIyOTsmIzE1NjsmIzEzNDsmIzIyOTsmIzE4OTsmIzE2MjsiPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTcgMzNDMjUuODM2NiAzMyAzMyAyNS44MzY2IDMzIDE3QzMzIDguMTYzNDQgMjUuODM2NiAxIDE3IDFDOC4xNjM0NCAxIDEgOC4xNjM0NCAxIDE3QzEgMjUuODM2NiA4LjE2MzQ0IDMzIDE3IDMzWiIgZmlsbD0id2hpdGUiLz4KPGcgaWQ9IlZlY3Rvcl8yIiBmaWx0ZXI9InVybCgjZmlsdGVyMF9pXzQ0M18zNDkpIj4KPHBhdGggZD0iTTE3IDMzQzI1LjgzNjYgMzMgMzMgMjUuODM2NiAzMyAxN0MzMyA4LjE2MzQ0IDI1LjgzNjYgMSAxNyAxQzguMTYzNDQgMSAxIDguMTYzNDQgMSAxN0MxIDI1LjgzNjYgOC4xNjM0NCAzMyAxNyAzM1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl8zIiBkPSJNMTcgMzNDMjUuODM2NiAzMyAzMyAyNS44MzY2IDMzIDE3QzMzIDguMTYzNDQgMjUuODM2NiAxIDE3IDFDOC4xNjM0NCAxIDEgOC4xNjM0NCAxIDE3QzEgMjUuODM2NiA4LjE2MzQ0IDMzIDE3IDMzWiIgc3Ryb2tlPSIjQkVBMDE5IiBzdHJva2Utd2lkdGg9IjAuNSIvPgo8L2c+CjxnIGlkPSImIzIyODsmIzE4NDsmIzEzNzsmIzIzMjsmIzE2NzsmIzE0NjsmIzIyOTsmIzE4OTsmIzE2MjsiPgo8cGF0aCBpZD0iVmVjdG9yXzQiIGQ9Ik0xNyA0MUwyMSAzNUgxM0wxNyA0MVoiIGZpbGw9IndoaXRlIi8+CjxnIGlkPSJWZWN0b3JfNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfaV80NDNfMzQ5KSI+CjxwYXRoIGQ9Ik0xNyA0MUwyMSAzNUgxM0wxNyA0MVoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl82IiBkPSJNMTcgNDFMMjEgMzVIMTNMMTcgNDFaIiBzdHJva2U9IiNCRUEwMTkiIHN0cm9rZS13aWR0aD0iMC41Ii8+CjwvZz4KPGcgaWQ9IiYjMjMwOyYjMTY0OyYjMTczOyYjMjI5OyYjMTU2OyYjMTM0OyYjMjI5OyYjMTg5OyYjMTYyO18yIj4KPHBhdGggaWQ9IlZlY3Rvcl83IiBkPSJNMTcgMzBDMjQuMTc5NyAzMCAzMCAyNC4xNzk3IDMwIDE3QzMwIDkuODIwMyAyNC4xNzk3IDQgMTcgNEM5LjgyMDMgNCA0IDkuODIwMyA0IDE3QzQgMjQuMTc5NyA5LjgyMDMgMzAgMTcgMzBaIiBmaWxsPSIjQkVBMDE5Ii8+CjxnIGlkPSJWZWN0b3JfOCIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjJfaV80NDNfMzQ5KSI+CjxwYXRoIGQ9Ik0xNyAzMEMyNC4xNzk3IDMwIDMwIDI0LjE3OTcgMzAgMTdDMzAgOS44MjAzIDI0LjE3OTcgNCAxNyA0QzkuODIwMyA0IDQgOS44MjAzIDQgMTdDNCAyNC4xNzk3IDkuODIwMyAzMCAxNyAzMFoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl85IiBkPSJNMTcgMzBDMjQuMTc5NyAzMCAzMCAyNC4xNzk3IDMwIDE3QzMwIDkuODIwMyAyNC4xNzk3IDQgMTcgNEM5LjgyMDMgNCA0IDkuODIwMyA0IDE3QzQgMjQuMTc5NyA5LjgyMDMgMzAgMTcgMzBaIiBzdHJva2U9IiNENEM0N0YiLz4KPC9nPgo8L2c+CjwvZz4KPC9nPgo8L2c+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfaV80NDNfMzQ5IiB4PSIxIiB5PSIxIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldC8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiLz4KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwLjc0NTA5OCAwIDAgMCAwIDAuNjI3NDUxIDAgMCAwIDAgMC4wOTgwMzkyIDAgMCAwIDEgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0MV9pbm5lclNoYWRvd180NDNfMzQ5Ii8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2lfNDQzXzM0OSIgeD0iMTMiIHk9IjM1IiB3aWR0aD0iOCIgaGVpZ2h0PSI2IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMC43NDUwOTggMCAwIDAgMCAwLjYyNzQ1MSAwIDAgMCAwIDAuMDk4MDM5MiAwIDAgMCAxIDAiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3dfNDQzXzM0OSIvPgo8L2ZpbHRlcj4KPGZpbHRlciBpZD0iZmlsdGVyMl9pXzQ0M18zNDkiIHg9IjQiIHk9IjQiIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgo8ZmVDb2xvck1hdHJpeCBpbj0iU291cmNlQWxwaGEiIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMCIgcmVzdWx0PSJoYXJkQWxwaGEiLz4KPGZlT2Zmc2V0Lz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNC41Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMC44MzEzNzMgMCAwIDAgMCAwLjc2ODYyNyAwIDAgMCAwIDAuNDk4MDM5IDAgMCAwIDEgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0MV9pbm5lclNoYWRvd180NDNfMzQ5Ii8+CjwvZmlsdGVyPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ0M18zNDkiPgo8cmVjdCB3aWR0aD0iMzQiIGhlaWdodD0iNDIiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==",
127
- }),
128
- text: new Text({
129
- fill: new Fill({
130
- color: "#ffffff",
131
- }),
132
- offsetY: -2,
133
- font: "14px sans-serif",
134
- text: size.toString(),
135
- }),
136
- });
137
- let imageStyle2 = new Style({
138
- image: new Icon({
139
- src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCAzNCA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IiYjMjMwOyYjMTQ5OyYjMTMzOyYjMjMzOyYjMTU0OyYjMTU2OyIgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ0M18zMTApIj4KPGcgaWQ9IiYjMjMzOyYjMTYxOyYjMTgxOyYjMjMzOyYjMTU3OyYjMTYyOy0xIj4KPGcgaWQ9IiYjMjMzOyYjMTY2OyYjMTUwOyYjMjMzOyYjMTYxOyYjMTgxOy0mIzIzMTsmIzE1MzsmIzE4OTsmIzIzMjsmIzEzNzsmIzE3ODsmIzIyOTsmIzE4NTsmIzE3OTsmIzIzMzsmIzE1NzsmIzE2MjsxIj4KPGcgaWQ9IiYjMjI5OyYjMTU1OyYjMTkwOyYjMjMwOyYjMTYwOyYjMTM1OyI+CjxnIGlkPSImIzIzMDsmIzE0OTsmIzEzMzsmIzIzMzsmIzE1NDsmIzE1NjtfMiI+CjxnIGlkPSImIzIzMDsmIzE2NDsmIzE3MzsmIzIyOTsmIzE1NjsmIzEzNDsmIzIyOTsmIzE4OTsmIzE2MjsiPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTcgMzNDMjUuODM2NiAzMyAzMyAyNS44MzY2IDMzIDE3QzMzIDguMTYzNDQgMjUuODM2NiAxIDE3IDFDOC4xNjM0NCAxIDEgOC4xNjM0NCAxIDE3QzEgMjUuODM2NiA4LjE2MzQ0IDMzIDE3IDMzWiIgZmlsbD0id2hpdGUiLz4KPGcgaWQ9IlZlY3Rvcl8yIiBmaWx0ZXI9InVybCgjZmlsdGVyMF9pXzQ0M18zMTApIj4KPHBhdGggZD0iTTE3IDMzQzI1LjgzNjYgMzMgMzMgMjUuODM2NiAzMyAxN0MzMyA4LjE2MzQ0IDI1LjgzNjYgMSAxNyAxQzguMTYzNDQgMSAxIDguMTYzNDQgMSAxN0MxIDI1LjgzNjYgOC4xNjM0NCAzMyAxNyAzM1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl8zIiBkPSJNMTcgMzNDMjUuODM2NiAzMyAzMyAyNS44MzY2IDMzIDE3QzMzIDguMTYzNDQgMjUuODM2NiAxIDE3IDFDOC4xNjM0NCAxIDEgOC4xNjM0NCAxIDE3QzEgMjUuODM2NiA4LjE2MzQ0IDMzIDE3IDMzWiIgc3Ryb2tlPSIjRTQ0QjAwIiBzdHJva2Utd2lkdGg9IjAuNSIvPgo8L2c+CjxnIGlkPSImIzIyODsmIzE4NDsmIzEzNzsmIzIzMjsmIzE2NzsmIzE0NjsmIzIyOTsmIzE4OTsmIzE2MjsiPgo8cGF0aCBpZD0iVmVjdG9yXzQiIGQ9Ik0xNyA0MUwyMSAzNUgxM0wxNyA0MVoiIGZpbGw9IndoaXRlIi8+CjxnIGlkPSJWZWN0b3JfNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfaV80NDNfMzEwKSI+CjxwYXRoIGQ9Ik0xNyA0MUwyMSAzNUgxM0wxNyA0MVoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl82IiBkPSJNMTcgNDFMMjEgMzVIMTNMMTcgNDFaIiBzdHJva2U9IiNFNDRCMDAiIHN0cm9rZS13aWR0aD0iMC41Ii8+CjwvZz4KPGcgaWQ9IiYjMjMwOyYjMTY0OyYjMTczOyYjMjI5OyYjMTU2OyYjMTM0OyYjMjI5OyYjMTg5OyYjMTYyO18yIj4KPHBhdGggaWQ9IlZlY3Rvcl83IiBkPSJNMTcgMzBDMjQuMTc5NyAzMCAzMCAyNC4xNzk3IDMwIDE3QzMwIDkuODIwMyAyNC4xNzk3IDQgMTcgNEM5LjgyMDMgNCA0IDkuODIwMyA0IDE3QzQgMjQuMTc5NyA5LjgyMDMgMzAgMTcgMzBaIiBmaWxsPSIjRTQ0QjAwIi8+CjxnIGlkPSJWZWN0b3JfOCIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjJfaV80NDNfMzEwKSI+CjxwYXRoIGQ9Ik0xNyAzMEMyNC4xNzk3IDMwIDMwIDI0LjE3OTcgMzAgMTdDMzAgOS44MjAzIDI0LjE3OTcgNCAxNyA0QzkuODIwMyA0IDQgOS44MjAzIDQgMTdDNCAyNC4xNzk3IDkuODIwMyAzMCAxNyAzMFoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPHBhdGggaWQ9IlZlY3Rvcl85IiBkPSJNMTcgMzBDMjQuMTc5NyAzMCAzMCAyNC4xNzk3IDMwIDE3QzMwIDkuODIwMyAyNC4xNzk3IDQgMTcgNEM5LjgyMDMgNCA0IDkuODIwMyA0IDE3QzQgMjQuMTc5NyA5LjgyMDMgMzAgMTcgMzBaIiBzdHJva2U9IiNGRjY3MDAiLz4KPC9nPgo8L2c+CjwvZz4KPC9nPgo8L2c+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfaV80NDNfMzEwIiB4PSIxIiB5PSIxIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldC8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiLz4KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMC40MDM5MjIgMCAwIDAgMCAwIDAgMCAwIDEgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0MV9pbm5lclNoYWRvd180NDNfMzEwIi8+CjwvZmlsdGVyPgo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2lfNDQzXzMxMCIgeD0iMTMiIHk9IjM1IiB3aWR0aD0iOCIgaGVpZ2h0PSI2IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMC44OTQxMTggMCAwIDAgMCAwLjI5NDExOCAwIDAgMCAwIDAgMCAwIDAgMSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJzaGFwZSIgcmVzdWx0PSJlZmZlY3QxX2lubmVyU2hhZG93XzQ0M18zMTAiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjJfaV80NDNfMzEwIiB4PSI0IiB5PSI0IiB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldC8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjQuNSIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+CjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAwLjQwMzkyMiAwIDAgMCAwIDAgMCAwIDAgMSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJzaGFwZSIgcmVzdWx0PSJlZmZlY3QxX2lubmVyU2hhZG93XzQ0M18zMTAiLz4KPC9maWx0ZXI+CjxjbGlwUGF0aCBpZD0iY2xpcDBfNDQzXzMxMCI+CjxyZWN0IHdpZHRoPSIzNCIgaGVpZ2h0PSI0MiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K",
140
- }),
141
- text: new Text({
142
- fill: new Fill({
143
- color: "#ffffff",
144
- }),
145
- offsetY: -2,
146
- font: "14px sans-serif",
147
- text: size.toString(),
148
- }),
149
- });
150
- let imageStyleNew = new Style({
151
- image: new Icon({
152
- src: feature.get("features")[0].getProperties().iconUrl,
153
- scale: 0.5,
154
- }),
155
- text: new Text({
156
- fill: new Fill({
157
- color: "#ffffff",
158
- }),
159
- offsetY: 16,
160
- font: "14px sans-serif",
161
- text: size.toString(),
162
- }),
163
- });
164
- if (mapRef.value.getView().getZoom() < 18) {
165
- return imageStyleNew;
166
- } else {
167
- let bz = 1;
168
- feature.get("features").forEach((e) => {
169
- let state = e.getProperties().otherInfo.state;
170
- if (state === 0) {
171
- bz = 0;
172
- }
173
- });
174
- if (bz === 1) {
175
- return imageStyle1;
176
- } else {
177
- return imageStyle2;
178
- }
179
- }
180
- } else {
181
- style = feature.get("features")[0].getStyle();
182
- return style;
183
- }
184
- },
185
- });
186
- const clusterSource = new Cluster({
187
- distance: 80,
188
- minDistance: 200,
189
- source: sourceWithoutText,
190
- });
191
- if (foundLayer) {
192
- foundLayer.setSource(clusterSource);
193
- } else {
194
- customLayerRef.value.setSource(clusterSource);
195
- }
196
- } else {
197
- customLayerRef.value = new VectorLayer({
198
- layerName: id,
199
- zIndex: 999,
200
- });
201
- if (foundLayer) {
202
- foundLayer.setSource(sourceWithoutText);
203
- } else {
204
- customLayerRef.value.setSource(sourceWithoutText);
205
- }
206
- }
207
- if (!foundLayer) {
208
- mapRef.value.addLayer(customLayerRef.value);
209
- }
210
- };
211
-
212
- const addLineByArr = (arr, id, lineLayerRef) => {
213
- let lineFeatures = [];
214
- arr.forEach((lineItem) => {
215
- let newArr = lineItem.xyArr.map((item) => item);
216
- let lineFeature = new Feature({
217
- geometry: new LineString(newArr),
218
- });
219
- lineFeature.setStyle(
220
- new Style({
221
- stroke: new Stroke({
222
- color: lineItem.color,
223
- width: lineItem.width,
224
- lineDash: lineItem.lineDash ? [10, 10] : undefined
225
- }),
226
- })
227
- );
228
- lineFeatures.push(lineFeature);
229
- });
230
- let lineSource = new VectorSource({
231
- features: lineFeatures,
232
- });
233
- lineLayerRef.value = new VectorLayer({
234
- layerName: id,
235
- zIndex: 999,
236
- source: lineSource,
237
- });
238
- mapRef.value.addLayer(lineLayerRef.value);
239
- };
240
-
241
- const addHeatmapByArr = (arr, id) => {
242
- let existingLayer = findLayerByName(id);
243
- if (existingLayer) {
244
- mapRef.value.removeLayer(existingLayer);
245
- }
246
- let heatmapLayer = new HeatmapLayer({
247
- layerName: id,
248
- zIndex: 900,
249
- source: new VectorSource({
250
- features: new GeoJSON().readFeatures(arr),
251
- }),
252
- blur: 18,
253
- radius: 2,
254
- weight: (e) => {
255
- return 1;
256
- },
257
- });
258
- mapRef.value.addLayer(heatmapLayer);
259
- };
260
-
261
- const removeLayerByName = (layerName) => {
262
- let arry = mapRef.value.getLayers().getArray();
263
- let foundLayer = null;
264
- for (let i = 0; i < arry.length; i++) {
265
- let layer = arry[i];
266
- if (layer.get("layerName") === layerName) {
267
- foundLayer = layer;
268
- break;
269
- }
270
- }
271
- mapRef.value.removeLayer(foundLayer);
272
- // closePopup 需要从父组件传入
273
- };
274
-
275
- const findLayerByName = (layerName) => {
276
- let arry = mapRef.value.getLayers().getArray();
277
- let foundLayer = null;
278
- for (let i = 0; i < arry.length; i++) {
279
- let layer = arry[i];
280
- if (layer.get("layerName") === layerName) {
281
- foundLayer = layer;
282
- break;
283
- }
284
- }
285
- return foundLayer;
286
- };
287
-
288
- const isLayerInMap = (layer) => {
289
- var layersArray = mapRef.value.getLayers().getArray();
290
- return layersArray.some(function (mapLayer) {
291
- return mapLayer === layer;
292
- });
293
- };
294
-
295
- // 返回需要在组件中使用的属性和方法
296
- return {
297
- // 数据属性
298
- gongganTextLayerShow,
299
- gongganTextLayerList,
300
- sourceWithTextList,
301
-
302
- // 方法
303
- zoomInBylatlon,
304
- addPointByArr,
305
- addLineByArr,
306
- addHeatmapByArr,
307
- removeLayerByName,
308
- findLayerByName,
309
- isLayerInMap,
310
- };
311
- }
312
-
313
- export default {
314
- useUtils
315
- };
package/packages/index.js DELETED
@@ -1,26 +0,0 @@
1
- import gisMapXinJiang from './gisMapXinJiang/index.vue'
2
- import { useUtils } from './gisMapXinJiang/js/utills'
3
- import { useBaseLayers } from './gisMapXinJiang/js/initBaseLayers'
4
-
5
- // 组件安装函数
6
- const install = (app) => {
7
- app.component('gisMapXinJiang', gisMapXinJiang)
8
- }
9
-
10
- // 创建插件对象
11
- const gisMap = {
12
- install,
13
- gisMapXinJiang,
14
- useUtils,
15
- useBaseLayers
16
- }
17
-
18
- // 同时默认导出插件
19
- export default gisMap
20
-
21
- // 分别导出组件和工具函数
22
- export {
23
- gisMapXinJiang,
24
- useUtils,
25
- useBaseLayers
26
- }
File without changes
File without changes