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

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.
@@ -291,7 +291,7 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
291
291
 
292
292
  private fun addMarkerViewToMap(markerView: LuggMarkerView) {
293
293
  val map = googleMap ?: run {
294
- RNLog.w(reactContext, "Lugg: addMarkerViewToMap called without a map")
294
+ RNLog.w(reactContext, "LuggMaps: addMarkerViewToMap called without a map")
295
295
  return
296
296
  }
297
297
 
@@ -380,7 +380,7 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
380
380
  if (value.isNullOrEmpty()) return
381
381
 
382
382
  if (mapView != null) {
383
- RNLog.w(reactContext, "Lugg: mapId cannot be changed after map is initialized")
383
+ RNLog.w(reactContext, "LuggMaps: mapId cannot be changed after map is initialized")
384
384
  return
385
385
  }
386
386
 
@@ -450,7 +450,8 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
450
450
  fun moveCamera(latitude: Double, longitude: Double, zoom: Double, duration: Int) {
451
451
  val map = googleMap ?: return
452
452
  val position = LatLng(latitude, longitude)
453
- val cameraUpdate = CameraUpdateFactory.newLatLngZoom(position, zoom.toFloat())
453
+ val targetZoom = if (zoom > 0) zoom.toFloat() else map.cameraPosition.zoom
454
+ val cameraUpdate = CameraUpdateFactory.newLatLngZoom(position, targetZoom)
454
455
  when {
455
456
  duration < 0 -> map.animateCamera(cameraUpdate)
456
457
  duration > 0 -> map.animateCamera(cameraUpdate, duration, null)
@@ -537,16 +537,18 @@ using namespace luggmaps::events;
537
537
  return;
538
538
  }
539
539
 
540
+ double targetZoom = zoom > 0 ? zoom : _mapView.zoomLevel;
541
+
540
542
  if (duration < 0) {
541
543
  [self setCameraWithLatitude:latitude
542
544
  longitude:longitude
543
- zoom:zoom
545
+ zoom:targetZoom
544
546
  animated:YES];
545
547
  } else if (duration > 0) {
546
548
  CLLocationCoordinate2D center =
547
549
  CLLocationCoordinate2DMake(latitude, longitude);
548
550
  MKCoordinateRegion region = [_mapView regionForCenterCoordinate:center
549
- zoomLevel:zoom];
551
+ zoomLevel:targetZoom];
550
552
  [UIView animateWithDuration:duration / 1000.0
551
553
  animations:^{
552
554
  [self->_mapView setRegion:region animated:NO];
@@ -554,7 +556,7 @@ using namespace luggmaps::events;
554
556
  } else {
555
557
  [self setCameraWithLatitude:latitude
556
558
  longitude:longitude
557
- zoom:zoom
559
+ zoom:targetZoom
558
560
  animated:NO];
559
561
  }
560
562
  }
@@ -245,8 +245,10 @@ static NSString *const kDemoMapId = @"DEMO_MAP_ID";
245
245
  marker.zIndex = (int)markerView.zIndex;
246
246
  if (markerView.hasCustomView) {
247
247
  UIView *iconView = markerView.iconView;
248
- [iconView removeFromSuperview];
249
- marker.iconView = iconView;
248
+ if (marker.iconView != iconView) {
249
+ [iconView removeFromSuperview];
250
+ marker.iconView = iconView;
251
+ }
250
252
  marker.groundAnchor = markerView.anchor;
251
253
  } else {
252
254
  marker.iconView = nil;
@@ -396,10 +398,10 @@ static NSString *const kDemoMapId = @"DEMO_MAP_ID";
396
398
  return;
397
399
  }
398
400
 
399
- GMSCameraPosition *camera =
400
- [GMSCameraPosition cameraWithLatitude:latitude
401
- longitude:longitude
402
- zoom:(float)zoom];
401
+ float targetZoom = zoom > 0 ? (float)zoom : _mapView.camera.zoom;
402
+ GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latitude
403
+ longitude:longitude
404
+ zoom:targetZoom];
403
405
  if (duration < 0) {
404
406
  [_mapView animateToCameraPosition:camera];
405
407
  } else if (duration > 0) {
@@ -25,9 +25,9 @@ export class MapView extends React.Component {
25
25
  const ref = this.nativeRef.current;
26
26
  if (!ref) return;
27
27
  const {
28
- zoom,
28
+ zoom = 0,
29
29
  duration = -1
30
- } = options;
30
+ } = options ?? {};
31
31
  this.nativeCommands.moveCamera(ref, coordinate.latitude, coordinate.longitude, zoom, duration);
32
32
  }
33
33
  fitCoordinates(coordinates, options) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","StyleSheet","LuggGoogleMapViewNativeComponent","Commands","GoogleMapCommands","LuggAppleMapViewNativeComponent","AppleMapCommands","LuggMapWrapperViewNativeComponent","jsx","_jsx","jsxs","_jsxs","MapView","Component","defaultProps","provider","OS","initialZoom","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","nativeRef","createRef","nativeCommands","props","isApple","moveCamera","coordinate","options","ref","current","zoom","duration","latitude","longitude","fitCoordinates","coordinates","first","padding","top","left","bottom","right","length","render","mapId","initialCoordinate","minZoom","maxZoom","userLocationEnabled","onCameraMove","onCameraIdle","onReady","children","rest","NativeMapView","style","absoluteFill"],"sourceRoot":"../../src","sources":["MapView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Platform","StyleSheet","LuggGoogleMapViewNativeComponent","Commands","GoogleMapCommands","LuggAppleMapViewNativeComponent","AppleMapCommands","LuggMapWrapperViewNativeComponent","jsx","_jsx","jsxs","_jsxs","MapView","Component","defaultProps","provider","OS","initialZoom","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","nativeRef","createRef","nativeCommands","props","isApple","moveCamera","coordinate","options","ref","current","zoom","duration","latitude","longitude","fitCoordinates","coordinates","first","padding","top","left","bottom","right","length","render","mapId","initialCoordinate","minZoom","maxZoom","userLocationEnabled","onCameraMove","onCameraIdle","onReady","children","rest","NativeMapView","style","absoluteFill"],"sourceRoot":"../../src","sources":["MapView.tsx"],"mappings":"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","ignoreList":[]}
@@ -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":[]}
@@ -5,7 +5,7 @@ export declare class MapView extends React.Component<MapViewProps> implements Ma
5
5
  static defaultProps: Partial<MapViewProps>;
6
6
  private nativeRef;
7
7
  private get nativeCommands();
8
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions): void;
8
+ moveCamera(coordinate: Coordinate, options?: MoveCameraOptions): void;
9
9
  fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions): void;
10
10
  render(): import("react/jsx-runtime").JSX.Element;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.d.ts","sourceRoot":"","sources":["../../../src/MapView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,OACX,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,CACpC,YAAW,UAAU;IAErB,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAOxC;IAEF,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,KAAK,cAAc,GAIzB;IAED,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB;IAc7D,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAyBzE,MAAM;CAkDP"}
1
+ {"version":3,"file":"MapView.d.ts","sourceRoot":"","sources":["../../../src/MapView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,OACX,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,CACpC,YAAW,UAAU;IAErB,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAOxC;IAEF,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,KAAK,cAAc,GAIzB;IAED,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAc9D,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAyBzE,MAAM;CAkDP"}
@@ -6,7 +6,7 @@ import type { MapProvider, Coordinate, EdgeInsets } from './types';
6
6
  * @default duration -1
7
7
  */
8
8
  export interface MoveCameraOptions {
9
- zoom: number;
9
+ zoom?: number;
10
10
  duration?: number;
11
11
  }
12
12
  /**
@@ -21,7 +21,7 @@ export interface FitCoordinatesOptions {
21
21
  * MapView ref methods
22
22
  */
23
23
  export interface MapViewRef {
24
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions): void;
24
+ moveCamera(coordinate: Coordinate, options?: MoveCameraOptions): void;
25
25
  fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions): void;
26
26
  }
27
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.types.d.ts","sourceRoot":"","sources":["../../../src/MapView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrE,cAAc,CACZ,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IACzE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
1
+ {"version":3,"file":"MapView.types.d.ts","sourceRoot":"","sources":["../../../src/MapView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtE,cAAc,CACZ,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IACzE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -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.17",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
package/src/MapView.tsx CHANGED
@@ -36,11 +36,11 @@ export class MapView
36
36
  return isApple ? AppleMapCommands : GoogleMapCommands;
37
37
  }
38
38
 
39
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions) {
39
+ moveCamera(coordinate: Coordinate, options?: MoveCameraOptions) {
40
40
  const ref = this.nativeRef.current;
41
41
  if (!ref) return;
42
42
 
43
- const { zoom, duration = -1 } = options;
43
+ const { zoom = 0, duration = -1 } = options ?? {};
44
44
  this.nativeCommands.moveCamera(
45
45
  ref,
46
46
  coordinate.latitude,
@@ -7,7 +7,7 @@ import type { MapProvider, Coordinate, EdgeInsets } from './types';
7
7
  * @default duration -1
8
8
  */
9
9
  export interface MoveCameraOptions {
10
- zoom: number;
10
+ zoom?: number;
11
11
  duration?: number;
12
12
  }
13
13
 
@@ -24,7 +24,7 @@ export interface FitCoordinatesOptions {
24
24
  * MapView ref methods
25
25
  */
26
26
  export interface MapViewRef {
27
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions): void;
27
+ moveCamera(coordinate: Coordinate, options?: MoveCameraOptions): void;
28
28
  fitCoordinates(
29
29
  coordinates: Coordinate[],
30
30
  options?: FitCoordinatesOptions
@@ -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
  );