@lugg/maps 0.2.0-alpha.15 → 0.2.0-alpha.16

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,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';
4
- import { View, StyleSheet } from 'react-native';
3
+ import { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
5
  import { Map, useMap } from '@vis.gl/react-google-maps';
6
6
  import { Marker } from "./components/Marker.web.js";
7
7
  import { MapIdContext } from "./MapProvider.web.js";
@@ -87,9 +87,34 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
87
87
  } = props;
88
88
  const id = useId();
89
89
  const map = useMap(id);
90
+ const containerRef = useRef(null);
90
91
  const readyFired = useRef(false);
91
92
  const isDragging = useRef(false);
92
93
  const wasGesture = useRef(false);
94
+ const prevPadding = useRef(padding);
95
+ const offsetCenter = useCallback((coord, zoom, paddingOverride, reverse = false) => {
96
+ const p = paddingOverride ?? padding;
97
+ const div = map?.getDiv();
98
+ if (!p || !div) {
99
+ return {
100
+ lat: coord.latitude,
101
+ lng: coord.longitude
102
+ };
103
+ }
104
+ const dir = reverse ? -1 : 1;
105
+ const scale = 256 * Math.pow(2, zoom);
106
+ const offsetX = dir * ((p.right ?? 0) - (p.left ?? 0)) / 2;
107
+ const offsetY = dir * ((p.bottom ?? 0) - (p.top ?? 0)) / 2;
108
+ const latRad = coord.latitude * Math.PI / 180;
109
+ const x = (coord.longitude + 180) / 360 * scale + offsetX;
110
+ const y = (1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2 * scale + offsetY;
111
+ const lng = x / scale * 360 - 180;
112
+ const lat = Math.atan(Math.sinh(Math.PI * (1 - 2 * y / scale))) * 180 / Math.PI;
113
+ return {
114
+ lat,
115
+ lng
116
+ };
117
+ }, [map, padding]);
93
118
  useImperativeHandle(ref, () => ({
94
119
  moveCamera(coordinate, options) {
95
120
  if (!map) return;
@@ -97,14 +122,12 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
97
122
  zoom,
98
123
  duration = -1
99
124
  } = options;
100
- const center = {
101
- lat: coordinate.latitude,
102
- lng: coordinate.longitude
103
- };
125
+ const targetZoom = zoom ?? map.getZoom() ?? initialZoom;
126
+ const center = offsetCenter(coordinate, targetZoom, undefined, false);
104
127
  if (duration === 0) {
105
128
  map.moveCamera({
106
129
  center,
107
- zoom
130
+ zoom: targetZoom
108
131
  });
109
132
  } else {
110
133
  const currentZoom = map.getZoom();
@@ -137,19 +160,40 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
137
160
  });
138
161
  });
139
162
  map.fitBounds(bounds, {
140
- top: fitPadding?.top ?? 0,
141
- left: fitPadding?.left ?? 0,
142
- bottom: fitPadding?.bottom ?? 0,
143
- right: fitPadding?.right ?? 0
163
+ top: (padding?.top ?? 0) + (fitPadding?.top ?? 0),
164
+ left: (padding?.left ?? 0) + (fitPadding?.left ?? 0),
165
+ bottom: (padding?.bottom ?? 0) + (fitPadding?.bottom ?? 0),
166
+ right: (padding?.right ?? 0) + (fitPadding?.right ?? 0)
144
167
  });
145
168
  }
146
- }), [map, initialZoom]);
169
+ }), [map, initialZoom, padding, offsetCenter]);
147
170
  useEffect(() => {
148
171
  if (map && !readyFired.current) {
149
172
  readyFired.current = true;
150
173
  onReady?.();
151
174
  }
152
175
  }, [map, onReady]);
176
+ useEffect(() => {
177
+ if (!map || !padding) return;
178
+ const prev = prevPadding.current;
179
+ const paddingChanged = prev?.top !== padding.top || prev?.left !== padding.left || prev?.bottom !== padding.bottom || prev?.right !== padding.right;
180
+ if (paddingChanged) {
181
+ const center = map.getCenter();
182
+ const zoom = map.getZoom() ?? initialZoom;
183
+ if (center) {
184
+ const logicalCenter = offsetCenter({
185
+ latitude: center.lat(),
186
+ longitude: center.lng()
187
+ }, zoom, prev, true);
188
+ const newCenter = offsetCenter({
189
+ latitude: logicalCenter.lat,
190
+ longitude: logicalCenter.lng
191
+ }, zoom, padding, false);
192
+ map.panTo(newCenter);
193
+ }
194
+ prevPadding.current = padding;
195
+ }
196
+ }, [map, padding, initialZoom, offsetCenter]);
153
197
  const handleDragStart = () => {
154
198
  isDragging.current = true;
155
199
  wasGesture.current = true;
@@ -158,10 +202,14 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
158
202
  isDragging.current = false;
159
203
  };
160
204
  const handleCameraChanged = event => {
205
+ const logicalCenter = offsetCenter({
206
+ latitude: event.detail.center.lat,
207
+ longitude: event.detail.center.lng
208
+ }, event.detail.zoom, undefined, true);
161
209
  const payload = {
162
210
  coordinate: {
163
- latitude: event.detail.center.lat,
164
- longitude: event.detail.center.lng
211
+ latitude: logicalCenter.lat,
212
+ longitude: logicalCenter.lng
165
213
  },
166
214
  zoom: event.detail.zoom,
167
215
  gesture: isDragging.current
@@ -170,12 +218,17 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
170
218
  };
171
219
  const handleIdle = event => {
172
220
  const center = event.map.getCenter();
221
+ const zoom = event.map.getZoom() ?? 0;
222
+ const logicalCenter = offsetCenter({
223
+ latitude: center?.lat() ?? 0,
224
+ longitude: center?.lng() ?? 0
225
+ }, zoom, undefined, true);
173
226
  const payload = {
174
227
  coordinate: {
175
- latitude: center?.lat() ?? 0,
176
- longitude: center?.lng() ?? 0
228
+ latitude: logicalCenter.lat,
229
+ longitude: logicalCenter.lng
177
230
  },
178
- zoom: event.map.getZoom() ?? 0,
231
+ zoom,
179
232
  gesture: wasGesture.current
180
233
  };
181
234
  onCameraIdle?.(createSyntheticEvent(payload));
@@ -186,37 +239,29 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
186
239
  lat: initialCoordinate.latitude,
187
240
  lng: initialCoordinate.longitude
188
241
  } : undefined;
189
- const paddingStyle = {
190
- paddingTop: padding?.top ?? 0,
191
- paddingLeft: padding?.left ?? 0,
192
- paddingRight: padding?.right ?? 0,
193
- paddingBottom: padding?.bottom ?? 0
194
- };
195
242
  return /*#__PURE__*/_jsx(MapIdContext.Provider, {
196
243
  value: id,
197
244
  children: /*#__PURE__*/_jsx(View, {
245
+ ref: containerRef,
198
246
  style: style,
199
- children: /*#__PURE__*/_jsx(View, {
200
- style: [StyleSheet.absoluteFill, paddingStyle],
201
- children: /*#__PURE__*/_jsxs(Map, {
202
- id: id,
203
- mapId: mapId,
204
- defaultCenter: defaultCenter,
205
- defaultZoom: initialZoom,
206
- minZoom: minZoom,
207
- maxZoom: maxZoom,
208
- gestureHandling: gestureHandling,
209
- disableDefaultUI: true,
210
- isFractionalZoomEnabled: true,
211
- tilt: pitchEnabled === false ? 0 : undefined,
212
- onDragstart: handleDragStart,
213
- onDragend: handleDragEnd,
214
- onCameraChanged: handleCameraChanged,
215
- onIdle: handleIdle,
216
- children: [/*#__PURE__*/_jsx(UserLocationMarker, {
217
- enabled: userLocationEnabled
218
- }), children]
219
- })
247
+ children: /*#__PURE__*/_jsxs(Map, {
248
+ id: id,
249
+ mapId: mapId,
250
+ defaultCenter: defaultCenter,
251
+ defaultZoom: initialZoom,
252
+ minZoom: minZoom,
253
+ maxZoom: maxZoom,
254
+ gestureHandling: gestureHandling,
255
+ disableDefaultUI: true,
256
+ isFractionalZoomEnabled: true,
257
+ tilt: pitchEnabled === false ? 0 : undefined,
258
+ onDragstart: handleDragStart,
259
+ onDragend: handleDragEnd,
260
+ onCameraChanged: handleCameraChanged,
261
+ onIdle: handleIdle,
262
+ children: [/*#__PURE__*/_jsx(UserLocationMarker, {
263
+ enabled: userLocationEnabled
264
+ }), children]
220
265
  })
221
266
  })
222
267
  });
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useEffect","useId","useImperativeHandle","useRef","useState","View","StyleSheet","Map","useMap","Marker","MapIdContext","jsx","_jsx","jsxs","_jsxs","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","type","userLocationDotStyle","width","height","backgroundColor","border","borderRadius","boxShadow","UserLocationMarker","enabled","coordinate","setCoordinate","watchId","updateLocation","position","latitude","coords","longitude","navigator","geolocation","getCurrentPosition","watchPosition","clearWatch","anchor","x","y","children","style","MapView","props","ref","mapId","google","maps","DEMO_MAP_ID","initialCoordinate","initialZoom","minZoom","maxZoom","zoomEnabled","scrollEnabled","pitchEnabled","padding","userLocationEnabled","onCameraMove","onCameraIdle","onReady","id","map","readyFired","isDragging","wasGesture","moveCamera","options","zoom","duration","center","lat","lng","currentZoom","getZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","fitPadding","length","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","current","handleDragStart","handleDragEnd","handleCameraChanged","event","payload","detail","gesture","handleIdle","getCenter","gestureHandling","defaultCenter","paddingStyle","paddingTop","paddingLeft","paddingRight","paddingBottom","Provider","value","absoluteFill","defaultZoom","disableDefaultUI","isFractionalZoomEnabled","tilt","onDragstart","onDragend","onCameraChanged","onIdle"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useCallback","useEffect","useId","useImperativeHandle","useRef","useState","View","Map","useMap","Marker","MapIdContext","jsx","_jsx","jsxs","_jsxs","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","type","userLocationDotStyle","width","height","backgroundColor","border","borderRadius","boxShadow","UserLocationMarker","enabled","coordinate","setCoordinate","watchId","updateLocation","position","latitude","coords","longitude","navigator","geolocation","getCurrentPosition","watchPosition","clearWatch","anchor","x","y","children","style","MapView","props","ref","mapId","google","maps","DEMO_MAP_ID","initialCoordinate","initialZoom","minZoom","maxZoom","zoomEnabled","scrollEnabled","pitchEnabled","padding","userLocationEnabled","onCameraMove","onCameraIdle","onReady","id","map","containerRef","readyFired","isDragging","wasGesture","prevPadding","offsetCenter","coord","zoom","paddingOverride","reverse","p","div","getDiv","lat","lng","dir","scale","Math","pow","offsetX","right","left","offsetY","bottom","top","latRad","PI","log","tan","cos","atan","sinh","moveCamera","options","duration","targetZoom","getZoom","center","undefined","currentZoom","zoomChanged","setZoom","panTo","fitCoordinates","coordinates","first","fitPadding","length","bounds","LatLngBounds","forEach","extend","fitBounds","current","prev","paddingChanged","getCenter","logicalCenter","newCenter","handleDragStart","handleDragEnd","handleCameraChanged","event","detail","payload","gesture","handleIdle","gestureHandling","defaultCenter","Provider","value","defaultZoom","disableDefaultUI","isFractionalZoomEnabled","tilt","onDragstart","onDragend","onCameraChanged","onIdle"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAoEzB,eAAO,MAAM,OAAO,qGAuKlB,CAAC"}
1
+ {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAoEzB,eAAO,MAAM,OAAO,qGAiPlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lugg/maps",
3
- "version": "0.2.0-alpha.15",
3
+ "version": "0.2.0-alpha.16",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  forwardRef,
3
+ useCallback,
3
4
  useEffect,
4
5
  useId,
5
6
  useImperativeHandle,
@@ -7,8 +8,8 @@ import {
7
8
  useState,
8
9
  type CSSProperties,
9
10
  } from 'react';
10
- import type { NativeSyntheticEvent, ViewStyle } from 'react-native';
11
- import { View, StyleSheet } from 'react-native';
11
+ import type { NativeSyntheticEvent } from 'react-native';
12
+ import { View } from 'react-native';
12
13
  import {
13
14
  Map,
14
15
  useMap,
@@ -116,9 +117,46 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
116
117
 
117
118
  const id = useId();
118
119
  const map = useMap(id);
120
+ const containerRef = useRef<View>(null);
119
121
  const readyFired = useRef(false);
120
122
  const isDragging = useRef(false);
121
123
  const wasGesture = useRef(false);
124
+ const prevPadding = useRef(padding);
125
+
126
+ const offsetCenter = useCallback(
127
+ (
128
+ coord: Coordinate,
129
+ zoom: number,
130
+ paddingOverride?: typeof padding,
131
+ reverse = false
132
+ ) => {
133
+ const p = paddingOverride ?? padding;
134
+ const div = map?.getDiv();
135
+ if (!p || !div) {
136
+ return { lat: coord.latitude, lng: coord.longitude };
137
+ }
138
+
139
+ const dir = reverse ? -1 : 1;
140
+ const scale = 256 * Math.pow(2, zoom);
141
+ const offsetX = (dir * ((p.right ?? 0) - (p.left ?? 0))) / 2;
142
+ const offsetY = (dir * ((p.bottom ?? 0) - (p.top ?? 0))) / 2;
143
+
144
+ const latRad = (coord.latitude * Math.PI) / 180;
145
+ const x = ((coord.longitude + 180) / 360) * scale + offsetX;
146
+ const y =
147
+ ((1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) /
148
+ 2) *
149
+ scale +
150
+ offsetY;
151
+
152
+ const lng = (x / scale) * 360 - 180;
153
+ const lat =
154
+ (Math.atan(Math.sinh(Math.PI * (1 - (2 * y) / scale))) * 180) / Math.PI;
155
+
156
+ return { lat, lng };
157
+ },
158
+ [map, padding]
159
+ );
122
160
 
123
161
  useImperativeHandle(
124
162
  ref,
@@ -127,10 +165,11 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
127
165
  if (!map) return;
128
166
 
129
167
  const { zoom, duration = -1 } = options;
130
- const center = { lat: coordinate.latitude, lng: coordinate.longitude };
168
+ const targetZoom = zoom ?? map.getZoom() ?? initialZoom;
169
+ const center = offsetCenter(coordinate, targetZoom, undefined, false);
131
170
 
132
171
  if (duration === 0) {
133
- map.moveCamera({ center, zoom });
172
+ map.moveCamera({ center, zoom: targetZoom });
134
173
  } else {
135
174
  const currentZoom = map.getZoom();
136
175
  const zoomChanged = zoom !== undefined && zoom !== currentZoom;
@@ -162,14 +201,14 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
162
201
  });
163
202
 
164
203
  map.fitBounds(bounds, {
165
- top: fitPadding?.top ?? 0,
166
- left: fitPadding?.left ?? 0,
167
- bottom: fitPadding?.bottom ?? 0,
168
- right: fitPadding?.right ?? 0,
204
+ top: (padding?.top ?? 0) + (fitPadding?.top ?? 0),
205
+ left: (padding?.left ?? 0) + (fitPadding?.left ?? 0),
206
+ bottom: (padding?.bottom ?? 0) + (fitPadding?.bottom ?? 0),
207
+ right: (padding?.right ?? 0) + (fitPadding?.right ?? 0),
169
208
  });
170
209
  },
171
210
  }),
172
- [map, initialZoom]
211
+ [map, initialZoom, padding, offsetCenter]
173
212
  );
174
213
 
175
214
  useEffect(() => {
@@ -179,6 +218,38 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
179
218
  }
180
219
  }, [map, onReady]);
181
220
 
221
+ useEffect(() => {
222
+ if (!map || !padding) return;
223
+
224
+ const prev = prevPadding.current;
225
+ const paddingChanged =
226
+ prev?.top !== padding.top ||
227
+ prev?.left !== padding.left ||
228
+ prev?.bottom !== padding.bottom ||
229
+ prev?.right !== padding.right;
230
+
231
+ if (paddingChanged) {
232
+ const center = map.getCenter();
233
+ const zoom = map.getZoom() ?? initialZoom;
234
+ if (center) {
235
+ const logicalCenter = offsetCenter(
236
+ { latitude: center.lat(), longitude: center.lng() },
237
+ zoom,
238
+ prev,
239
+ true
240
+ );
241
+ const newCenter = offsetCenter(
242
+ { latitude: logicalCenter.lat, longitude: logicalCenter.lng },
243
+ zoom,
244
+ padding,
245
+ false
246
+ );
247
+ map.panTo(newCenter);
248
+ }
249
+ prevPadding.current = padding;
250
+ }
251
+ }, [map, padding, initialZoom, offsetCenter]);
252
+
182
253
  const handleDragStart = () => {
183
254
  isDragging.current = true;
184
255
  wasGesture.current = true;
@@ -189,10 +260,16 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
189
260
  };
190
261
 
191
262
  const handleCameraChanged = (event: MapCameraChangedEvent) => {
263
+ const logicalCenter = offsetCenter(
264
+ { latitude: event.detail.center.lat, longitude: event.detail.center.lng },
265
+ event.detail.zoom,
266
+ undefined,
267
+ true
268
+ );
192
269
  const payload: CameraEventPayload = {
193
270
  coordinate: {
194
- latitude: event.detail.center.lat,
195
- longitude: event.detail.center.lng,
271
+ latitude: logicalCenter.lat,
272
+ longitude: logicalCenter.lng,
196
273
  },
197
274
  zoom: event.detail.zoom,
198
275
  gesture: isDragging.current,
@@ -202,12 +279,19 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
202
279
 
203
280
  const handleIdle = (event: MapEvent) => {
204
281
  const center = event.map.getCenter();
282
+ const zoom = event.map.getZoom() ?? 0;
283
+ const logicalCenter = offsetCenter(
284
+ { latitude: center?.lat() ?? 0, longitude: center?.lng() ?? 0 },
285
+ zoom,
286
+ undefined,
287
+ true
288
+ );
205
289
  const payload: CameraEventPayload = {
206
290
  coordinate: {
207
- latitude: center?.lat() ?? 0,
208
- longitude: center?.lng() ?? 0,
291
+ latitude: logicalCenter.lat,
292
+ longitude: logicalCenter.lng,
209
293
  },
210
- zoom: event.map.getZoom() ?? 0,
294
+ zoom,
211
295
  gesture: wasGesture.current,
212
296
  };
213
297
  onCameraIdle?.(createSyntheticEvent(payload));
@@ -225,37 +309,28 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
225
309
  ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
226
310
  : undefined;
227
311
 
228
- const paddingStyle: ViewStyle = {
229
- paddingTop: padding?.top ?? 0,
230
- paddingLeft: padding?.left ?? 0,
231
- paddingRight: padding?.right ?? 0,
232
- paddingBottom: padding?.bottom ?? 0,
233
- };
234
-
235
312
  return (
236
313
  <MapIdContext.Provider value={id}>
237
- <View style={style}>
238
- <View style={[StyleSheet.absoluteFill, paddingStyle]}>
239
- <Map
240
- id={id}
241
- mapId={mapId}
242
- defaultCenter={defaultCenter}
243
- defaultZoom={initialZoom}
244
- minZoom={minZoom}
245
- maxZoom={maxZoom}
246
- gestureHandling={gestureHandling}
247
- disableDefaultUI
248
- isFractionalZoomEnabled
249
- tilt={pitchEnabled === false ? 0 : undefined}
250
- onDragstart={handleDragStart}
251
- onDragend={handleDragEnd}
252
- onCameraChanged={handleCameraChanged}
253
- onIdle={handleIdle}
254
- >
255
- <UserLocationMarker enabled={userLocationEnabled} />
256
- {children}
257
- </Map>
258
- </View>
314
+ <View ref={containerRef} style={style}>
315
+ <Map
316
+ id={id}
317
+ mapId={mapId}
318
+ defaultCenter={defaultCenter}
319
+ defaultZoom={initialZoom}
320
+ minZoom={minZoom}
321
+ maxZoom={maxZoom}
322
+ gestureHandling={gestureHandling}
323
+ disableDefaultUI
324
+ isFractionalZoomEnabled
325
+ tilt={pitchEnabled === false ? 0 : undefined}
326
+ onDragstart={handleDragStart}
327
+ onDragend={handleDragEnd}
328
+ onCameraChanged={handleCameraChanged}
329
+ onIdle={handleIdle}
330
+ >
331
+ <UserLocationMarker enabled={userLocationEnabled} />
332
+ {children}
333
+ </Map>
259
334
  </View>
260
335
  </MapIdContext.Provider>
261
336
  );