@maptiler/geocoding-control 1.4.2-dev.3 → 2.0.0-rc.2
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.
- package/MapLibreBasedGeocodingControl.d.ts +2659 -35
- package/leaflet-controller.d.ts +1 -1
- package/leaflet-controller.js +580 -569
- package/leaflet-controller.js.map +1 -1
- package/leaflet-controller.umd.js +3 -3
- package/leaflet-controller.umd.js.map +1 -1
- package/leaflet.d.ts +74 -16
- package/leaflet.js +1396 -1369
- package/leaflet.js.map +1 -1
- package/leaflet.umd.js +3 -3
- package/leaflet.umd.js.map +1 -1
- package/maplibregl-controller.d.ts +7 -7
- package/maplibregl-controller.js +683 -661
- package/maplibregl-controller.js.map +1 -1
- package/maplibregl-controller.umd.js +3 -3
- package/maplibregl-controller.umd.js.map +1 -1
- package/maplibregl.d.ts +2614 -5
- package/maplibregl.js +1563 -1418
- package/maplibregl.js.map +1 -1
- package/maplibregl.umd.js +3 -3
- package/maplibregl.umd.js.map +1 -1
- package/maptilersdk.d.ts +2614 -5
- package/maptilersdk.js +1574 -1426
- package/maptilersdk.js.map +1 -1
- package/maptilersdk.umd.js +3 -3
- package/maptilersdk.umd.js.map +1 -1
- package/openlayers-controller.d.ts +1 -1
- package/openlayers-controller.js +308 -306
- package/openlayers-controller.js.map +1 -1
- package/openlayers-controller.umd.js +3 -3
- package/openlayers-controller.umd.js.map +1 -1
- package/openlayers.d.ts +21 -0
- package/openlayers.js +1300 -1318
- package/openlayers.js.map +1 -1
- package/openlayers.umd.js +3 -3
- package/openlayers.umd.js.map +1 -1
- package/package.json +17 -17
- package/react.d.ts +4 -4
- package/react.js +811 -798
- package/react.js.map +1 -1
- package/react.umd.js +1 -1
- package/react.umd.js.map +1 -1
- package/style.css +1 -1
- package/svelte/FeatureItem.svelte +1 -1
- package/svelte/FeatureItem.svelte.d.ts +1 -1
- package/svelte/GeocodingControl.svelte +68 -46
- package/svelte/GeocodingControl.svelte.d.ts +25 -11
- package/svelte/MapLibreBasedGeocodingControl.d.ts +2659 -35
- package/svelte/MapLibreBasedGeocodingControl.js +165 -58
- package/svelte/leaflet-controller.d.ts +1 -1
- package/svelte/leaflet-controller.js +50 -24
- package/svelte/leaflet.d.ts +74 -16
- package/svelte/leaflet.js +26 -15
- package/svelte/maplibregl-controller.d.ts +7 -7
- package/svelte/maplibregl-controller.js +96 -66
- package/svelte/maplibregl.d.ts +2614 -5
- package/svelte/maplibregl.js +10 -7
- package/svelte/maptilersdk.d.ts +2614 -5
- package/svelte/maptilersdk.js +23 -18
- package/svelte/openlayers-controller.d.ts +1 -1
- package/svelte/openlayers-controller.js +4 -1
- package/svelte/openlayers.d.ts +21 -0
- package/svelte/openlayers.js +31 -45
- package/svelte/react.d.ts +4 -4
- package/svelte/react.js +5 -5
- package/svelte/types.d.ts +72 -30
- package/svelte/vanilla.d.ts +14 -1
- package/svelte/vanilla.js +31 -8
- package/types.d.ts +72 -30
- package/vanilla.d.ts +14 -1
- package/vanilla.js +837 -796
- package/vanilla.js.map +1 -1
- package/vanilla.umd.js +1 -1
- package/vanilla.umd.js.map +1 -1
|
@@ -2,8 +2,7 @@ import { feature, featureCollection } from "@turf/helpers";
|
|
|
2
2
|
import union from "@turf/union";
|
|
3
3
|
import MarkerIcon from "./MarkerIcon.svelte";
|
|
4
4
|
import { setMask } from "./mask";
|
|
5
|
-
const
|
|
6
|
-
export function createMapLibreGlMapController(map, maplibregl, marker = true, showResultMarkers = true, flyToOptions = {}, fitBoundsOptions = {}, fullGeometryStyle = {
|
|
5
|
+
const defaultGeometryStyle = {
|
|
7
6
|
fill: {
|
|
8
7
|
paint: {
|
|
9
8
|
"fill-color": "#000",
|
|
@@ -22,50 +21,70 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
22
21
|
},
|
|
23
22
|
filter: ["!", ["has", "isMask"]],
|
|
24
23
|
},
|
|
25
|
-
}
|
|
24
|
+
};
|
|
25
|
+
const RESULT_SOURCE = "mtlr-gc-full-geom";
|
|
26
|
+
const RESULT_LAYER_FILL = "mtlr-gc-full-geom-fill";
|
|
27
|
+
const RESULT_LAYER_LINE = "mtlr-gc-full-geom-line";
|
|
28
|
+
export function createMapLibreGlMapController(map, maplibregl, marker = true, showResultMarkers = true, flyToOptions = {}, fitBoundsOptions = {}, fullGeometryStyle = defaultGeometryStyle, showPolyMarker = false) {
|
|
26
29
|
let eventHandler;
|
|
27
30
|
const markers = [];
|
|
28
31
|
let selectedMarker;
|
|
29
32
|
let reverseMarker;
|
|
30
33
|
let savedData; // used to restore features on style switch
|
|
31
|
-
function
|
|
32
|
-
if (!map.
|
|
33
|
-
(
|
|
34
|
-
|
|
34
|
+
function syncFullGeometryLayer() {
|
|
35
|
+
if (!map.loaded) {
|
|
36
|
+
map.once("load", syncFullGeometryLayer);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const effFullGeometryStyle = !fullGeometryStyle
|
|
40
|
+
? undefined
|
|
41
|
+
: fullGeometryStyle === true
|
|
42
|
+
? defaultGeometryStyle
|
|
43
|
+
: fullGeometryStyle;
|
|
44
|
+
if (!effFullGeometryStyle?.fill && !effFullGeometryStyle?.line) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const source = map.getSource(RESULT_SOURCE);
|
|
48
|
+
if (source) {
|
|
49
|
+
source.setData(savedData ?? featureCollection([]));
|
|
50
|
+
}
|
|
51
|
+
else if (savedData) {
|
|
52
|
+
map.addSource(RESULT_SOURCE, {
|
|
35
53
|
type: "geojson",
|
|
36
|
-
data:
|
|
54
|
+
data: savedData,
|
|
37
55
|
});
|
|
38
56
|
}
|
|
39
|
-
|
|
57
|
+
else {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!map.getLayer(RESULT_LAYER_FILL) && effFullGeometryStyle?.fill) {
|
|
40
61
|
map.addLayer({
|
|
41
|
-
...
|
|
42
|
-
id:
|
|
62
|
+
...effFullGeometryStyle?.fill,
|
|
63
|
+
id: RESULT_LAYER_FILL,
|
|
43
64
|
type: "fill",
|
|
44
|
-
source:
|
|
65
|
+
source: RESULT_SOURCE,
|
|
45
66
|
});
|
|
46
67
|
}
|
|
47
|
-
if (!map.getLayer(
|
|
68
|
+
if (!map.getLayer(RESULT_LAYER_LINE) && effFullGeometryStyle?.line) {
|
|
48
69
|
map.addLayer({
|
|
49
|
-
...
|
|
50
|
-
id:
|
|
70
|
+
...effFullGeometryStyle?.line,
|
|
71
|
+
id: RESULT_LAYER_LINE,
|
|
51
72
|
type: "line",
|
|
52
|
-
source:
|
|
73
|
+
source: RESULT_SOURCE,
|
|
53
74
|
});
|
|
54
75
|
}
|
|
55
|
-
if (savedData) {
|
|
56
|
-
setData(savedData);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (map.loaded()) {
|
|
60
|
-
addFullGeometryLayer();
|
|
61
76
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
});
|
|
77
|
+
function setAndSaveData(data) {
|
|
78
|
+
savedData = data;
|
|
79
|
+
syncFullGeometryLayer();
|
|
66
80
|
}
|
|
67
81
|
map.on("styledata", () => {
|
|
68
|
-
|
|
82
|
+
// timeout prevents collision with svelte-maplibre library
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
if (savedData) {
|
|
85
|
+
syncFullGeometryLayer();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
69
88
|
});
|
|
70
89
|
const handleMapClick = (e) => {
|
|
71
90
|
eventHandler?.({
|
|
@@ -87,13 +106,6 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
87
106
|
});
|
|
88
107
|
return new maplibregl.Marker({ element, offset: [1, -13] });
|
|
89
108
|
}
|
|
90
|
-
function setData(data) {
|
|
91
|
-
savedData = data;
|
|
92
|
-
if (!data) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
map.getSource("full-geom")?.setData(data);
|
|
96
|
-
}
|
|
97
109
|
return {
|
|
98
110
|
setEventHandler(handler) {
|
|
99
111
|
if (handler) {
|
|
@@ -131,23 +143,25 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
131
143
|
}
|
|
132
144
|
}
|
|
133
145
|
else if (coordinates) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
146
|
+
if (marker instanceof Function) {
|
|
147
|
+
reverseMarker = marker(map) ?? undefined;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
reverseMarker = (typeof marker === "object"
|
|
151
|
+
? new maplibregl.Marker(marker)
|
|
152
|
+
: createMarker())
|
|
153
|
+
.setLngLat(coordinates)
|
|
154
|
+
.addTo(map);
|
|
155
|
+
reverseMarker.getElement().classList.add("marker-reverse");
|
|
156
|
+
}
|
|
140
157
|
}
|
|
141
158
|
},
|
|
142
159
|
setMarkers(markedFeatures, picked) {
|
|
143
|
-
if (!marker) {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
160
|
for (const marker of markers) {
|
|
147
161
|
marker.remove();
|
|
148
162
|
}
|
|
149
163
|
markers.length = 0;
|
|
150
|
-
|
|
164
|
+
setAndSaveData(undefined);
|
|
151
165
|
if (!maplibregl) {
|
|
152
166
|
return;
|
|
153
167
|
}
|
|
@@ -163,14 +177,14 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
163
177
|
setMask({
|
|
164
178
|
...picked,
|
|
165
179
|
geometry: unioned.geometry,
|
|
166
|
-
},
|
|
180
|
+
}, setAndSaveData);
|
|
167
181
|
handled = true;
|
|
168
182
|
}
|
|
169
183
|
else {
|
|
170
184
|
const geometries = picked.geometry.geometries.filter((geometry) => geometry.type === "LineString" ||
|
|
171
185
|
geometry.type === "MultiLineString");
|
|
172
186
|
if (geometries.length > 0) {
|
|
173
|
-
|
|
187
|
+
setAndSaveData({
|
|
174
188
|
...picked,
|
|
175
189
|
geometry: { type: "GeometryCollection", geometries },
|
|
176
190
|
});
|
|
@@ -183,19 +197,26 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
183
197
|
}
|
|
184
198
|
else if (picked.geometry.type === "Polygon" ||
|
|
185
199
|
picked.geometry.type === "MultiPolygon") {
|
|
186
|
-
setMask(picked,
|
|
200
|
+
setMask(picked, setAndSaveData);
|
|
187
201
|
}
|
|
188
202
|
else if (picked.geometry.type === "LineString" ||
|
|
189
203
|
picked.geometry.type === "MultiLineString") {
|
|
190
|
-
|
|
204
|
+
setAndSaveData(picked);
|
|
191
205
|
return; // no pin for (multi)linestrings
|
|
192
206
|
}
|
|
193
|
-
if (
|
|
194
|
-
|
|
207
|
+
if (!showPolyMarker && picked.geometry.type !== "Point") {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (marker instanceof Function) {
|
|
211
|
+
const m = marker(map, picked);
|
|
212
|
+
if (m) {
|
|
213
|
+
markers.push(m);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else if (marker) {
|
|
217
|
+
markers.push(typeof marker === "object"
|
|
195
218
|
? new maplibregl.Marker(marker)
|
|
196
|
-
: createMarker())
|
|
197
|
-
.setLngLat(picked.center)
|
|
198
|
-
.addTo(map));
|
|
219
|
+
: createMarker().setLngLat(picked.center).addTo(map));
|
|
199
220
|
}
|
|
200
221
|
}
|
|
201
222
|
if (showResultMarkers) {
|
|
@@ -203,19 +224,28 @@ export function createMapLibreGlMapController(map, maplibregl, marker = true, sh
|
|
|
203
224
|
if (feature === picked) {
|
|
204
225
|
continue;
|
|
205
226
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
227
|
+
let marker;
|
|
228
|
+
if (showResultMarkers instanceof Function) {
|
|
229
|
+
marker = showResultMarkers(map, feature);
|
|
230
|
+
if (!marker) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
marker = (typeof showResultMarkers === "object"
|
|
236
|
+
? new maplibregl.Marker(showResultMarkers)
|
|
237
|
+
: createMarker(true))
|
|
238
|
+
.setLngLat(feature.center)
|
|
239
|
+
.setPopup(new maplibregl.Popup({
|
|
240
|
+
offset: [1, -27],
|
|
241
|
+
closeButton: false,
|
|
242
|
+
closeOnMove: true,
|
|
243
|
+
className: "maptiler-gc-popup",
|
|
244
|
+
}).setText(feature.place_type[0] === "reverse"
|
|
245
|
+
? feature.place_name
|
|
246
|
+
: feature.place_name.replace(/,.*/, "")))
|
|
247
|
+
.addTo(map);
|
|
248
|
+
}
|
|
219
249
|
const element = marker.getElement();
|
|
220
250
|
element.addEventListener("click", (e) => {
|
|
221
251
|
e.stopPropagation();
|