@lugg/maps 0.2.0-alpha.14 → 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,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';
3
+ import { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';
4
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";
@@ -87,7 +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);
92
+ const isDragging = useRef(false);
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]);
91
118
  useImperativeHandle(ref, () => ({
92
119
  moveCamera(coordinate, options) {
93
120
  if (!map) return;
@@ -95,14 +122,12 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
95
122
  zoom,
96
123
  duration = -1
97
124
  } = options;
98
- const center = {
99
- lat: coordinate.latitude,
100
- lng: coordinate.longitude
101
- };
125
+ const targetZoom = zoom ?? map.getZoom() ?? initialZoom;
126
+ const center = offsetCenter(coordinate, targetZoom, undefined, false);
102
127
  if (duration === 0) {
103
128
  map.moveCamera({
104
129
  center,
105
- zoom
130
+ zoom: targetZoom
106
131
  });
107
132
  } else {
108
133
  const currentZoom = map.getZoom();
@@ -135,13 +160,13 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
135
160
  });
136
161
  });
137
162
  map.fitBounds(bounds, {
138
- top: fitPadding?.top ?? 0,
139
- left: fitPadding?.left ?? 0,
140
- bottom: fitPadding?.bottom ?? 0,
141
- 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)
142
167
  });
143
168
  }
144
- }), [map, initialZoom]);
169
+ }), [map, initialZoom, padding, offsetCenter]);
145
170
  useEffect(() => {
146
171
  if (map && !readyFired.current) {
147
172
  readyFired.current = true;
@@ -149,55 +174,75 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
149
174
  }
150
175
  }, [map, onReady]);
151
176
  useEffect(() => {
152
- if (!map) return;
153
- const createPayload = gesture => {
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) {
154
181
  const center = map.getCenter();
155
- return {
156
- coordinate: {
157
- latitude: center?.lat() ?? 0,
158
- longitude: center?.lng() ?? 0
159
- },
160
- zoom: map.getZoom() ?? 0,
161
- gesture
162
- };
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]);
197
+ const handleDragStart = () => {
198
+ isDragging.current = true;
199
+ wasGesture.current = true;
200
+ };
201
+ const handleDragEnd = () => {
202
+ isDragging.current = false;
203
+ };
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);
209
+ const payload = {
210
+ coordinate: {
211
+ latitude: logicalCenter.lat,
212
+ longitude: logicalCenter.lng
213
+ },
214
+ zoom: event.detail.zoom,
215
+ gesture: isDragging.current
163
216
  };
164
- let isDragging = false;
165
- let wasGesture = false;
166
- const dragStartListener = map.addListener('dragstart', () => {
167
- isDragging = true;
168
- wasGesture = true;
169
- });
170
- const dragEndListener = map.addListener('dragend', () => {
171
- isDragging = false;
172
- });
173
- const centerListener = map.addListener('center_changed', () => {
174
- onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
175
- });
176
- const idleListener = map.addListener('idle', () => {
177
- onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
178
- wasGesture = false;
179
- });
180
- return () => {
181
- google.maps.event.removeListener(dragStartListener);
182
- google.maps.event.removeListener(dragEndListener);
183
- google.maps.event.removeListener(centerListener);
184
- google.maps.event.removeListener(idleListener);
217
+ onCameraMove?.(createSyntheticEvent(payload));
218
+ };
219
+ const handleIdle = event => {
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);
226
+ const payload = {
227
+ coordinate: {
228
+ latitude: logicalCenter.lat,
229
+ longitude: logicalCenter.lng
230
+ },
231
+ zoom,
232
+ gesture: wasGesture.current
185
233
  };
186
- }, [map, onCameraMove, onCameraIdle]);
234
+ onCameraIdle?.(createSyntheticEvent(payload));
235
+ wasGesture.current = false;
236
+ };
187
237
  const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'cooperative' : 'auto';
188
238
  const defaultCenter = initialCoordinate ? {
189
239
  lat: initialCoordinate.latitude,
190
240
  lng: initialCoordinate.longitude
191
241
  } : undefined;
192
- const mapStyle = {
193
- paddingTop: padding?.top ?? 0,
194
- paddingLeft: padding?.left ?? 0,
195
- paddingRight: padding?.right ?? 0,
196
- paddingBottom: padding?.bottom ?? 0
197
- };
198
242
  return /*#__PURE__*/_jsx(MapIdContext.Provider, {
199
243
  value: id,
200
244
  children: /*#__PURE__*/_jsx(View, {
245
+ ref: containerRef,
201
246
  style: style,
202
247
  children: /*#__PURE__*/_jsxs(Map, {
203
248
  id: id,
@@ -208,8 +253,12 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
208
253
  maxZoom: maxZoom,
209
254
  gestureHandling: gestureHandling,
210
255
  disableDefaultUI: true,
256
+ isFractionalZoomEnabled: true,
211
257
  tilt: pitchEnabled === false ? 0 : undefined,
212
- style: mapStyle,
258
+ onDragstart: handleDragStart,
259
+ onDragend: handleDragEnd,
260
+ onCameraChanged: handleCameraChanged,
261
+ onIdle: handleIdle,
213
262
  children: [/*#__PURE__*/_jsx(UserLocationMarker, {
214
263
  enabled: userLocationEnabled
215
264
  }), children]
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","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","readyFired","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","createPayload","gesture","getCenter","isDragging","wasGesture","dragStartListener","addListener","dragEndListener","centerListener","idleListener","event","removeListener","gestureHandling","defaultCenter","mapStyle","paddingTop","paddingLeft","paddingRight","paddingBottom","Provider","value","defaultZoom","disableDefaultUI","tilt"],"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":"AAeA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAoEzB,eAAO,MAAM,OAAO,qGAwKlB,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.14",
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,
@@ -9,7 +10,12 @@ import {
9
10
  } from 'react';
10
11
  import type { NativeSyntheticEvent } from 'react-native';
11
12
  import { View } from 'react-native';
12
- import { Map, useMap } from '@vis.gl/react-google-maps';
13
+ import {
14
+ Map,
15
+ useMap,
16
+ type MapCameraChangedEvent,
17
+ type MapEvent,
18
+ } from '@vis.gl/react-google-maps';
13
19
  import { Marker } from './components/Marker.web';
14
20
  import { MapIdContext } from './MapProvider.web';
15
21
 
@@ -111,7 +117,46 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
111
117
 
112
118
  const id = useId();
113
119
  const map = useMap(id);
120
+ const containerRef = useRef<View>(null);
114
121
  const readyFired = useRef(false);
122
+ const isDragging = useRef(false);
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
+ );
115
160
 
116
161
  useImperativeHandle(
117
162
  ref,
@@ -120,10 +165,11 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
120
165
  if (!map) return;
121
166
 
122
167
  const { zoom, duration = -1 } = options;
123
- const center = { lat: coordinate.latitude, lng: coordinate.longitude };
168
+ const targetZoom = zoom ?? map.getZoom() ?? initialZoom;
169
+ const center = offsetCenter(coordinate, targetZoom, undefined, false);
124
170
 
125
171
  if (duration === 0) {
126
- map.moveCamera({ center, zoom });
172
+ map.moveCamera({ center, zoom: targetZoom });
127
173
  } else {
128
174
  const currentZoom = map.getZoom();
129
175
  const zoomChanged = zoom !== undefined && zoom !== currentZoom;
@@ -155,14 +201,14 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
155
201
  });
156
202
 
157
203
  map.fitBounds(bounds, {
158
- top: fitPadding?.top ?? 0,
159
- left: fitPadding?.left ?? 0,
160
- bottom: fitPadding?.bottom ?? 0,
161
- 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),
162
208
  });
163
209
  },
164
210
  }),
165
- [map, initialZoom]
211
+ [map, initialZoom, padding, offsetCenter]
166
212
  );
167
213
 
168
214
  useEffect(() => {
@@ -173,48 +219,84 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
173
219
  }, [map, onReady]);
174
220
 
175
221
  useEffect(() => {
176
- if (!map) return;
177
-
178
- const createPayload = (gesture: boolean): CameraEventPayload => {
179
- const center = map.getCenter();
180
- return {
181
- coordinate: {
182
- latitude: center?.lat() ?? 0,
183
- longitude: center?.lng() ?? 0,
184
- },
185
- zoom: map.getZoom() ?? 0,
186
- gesture,
187
- };
188
- };
222
+ if (!map || !padding) return;
189
223
 
190
- let isDragging = false;
191
- let wasGesture = false;
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;
192
230
 
193
- const dragStartListener = map.addListener('dragstart', () => {
194
- isDragging = true;
195
- wasGesture = true;
196
- });
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]);
197
252
 
198
- const dragEndListener = map.addListener('dragend', () => {
199
- isDragging = false;
200
- });
253
+ const handleDragStart = () => {
254
+ isDragging.current = true;
255
+ wasGesture.current = true;
256
+ };
201
257
 
202
- const centerListener = map.addListener('center_changed', () => {
203
- onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
204
- });
258
+ const handleDragEnd = () => {
259
+ isDragging.current = false;
260
+ };
205
261
 
206
- const idleListener = map.addListener('idle', () => {
207
- onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
208
- wasGesture = false;
209
- });
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
+ );
269
+ const payload: CameraEventPayload = {
270
+ coordinate: {
271
+ latitude: logicalCenter.lat,
272
+ longitude: logicalCenter.lng,
273
+ },
274
+ zoom: event.detail.zoom,
275
+ gesture: isDragging.current,
276
+ };
277
+ onCameraMove?.(createSyntheticEvent(payload));
278
+ };
210
279
 
211
- return () => {
212
- google.maps.event.removeListener(dragStartListener);
213
- google.maps.event.removeListener(dragEndListener);
214
- google.maps.event.removeListener(centerListener);
215
- google.maps.event.removeListener(idleListener);
280
+ const handleIdle = (event: MapEvent) => {
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
+ );
289
+ const payload: CameraEventPayload = {
290
+ coordinate: {
291
+ latitude: logicalCenter.lat,
292
+ longitude: logicalCenter.lng,
293
+ },
294
+ zoom,
295
+ gesture: wasGesture.current,
216
296
  };
217
- }, [map, onCameraMove, onCameraIdle]);
297
+ onCameraIdle?.(createSyntheticEvent(payload));
298
+ wasGesture.current = false;
299
+ };
218
300
 
219
301
  const gestureHandling =
220
302
  scrollEnabled === false && zoomEnabled === false
@@ -227,16 +309,9 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
227
309
  ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
228
310
  : undefined;
229
311
 
230
- const mapStyle: CSSProperties = {
231
- paddingTop: padding?.top ?? 0,
232
- paddingLeft: padding?.left ?? 0,
233
- paddingRight: padding?.right ?? 0,
234
- paddingBottom: padding?.bottom ?? 0,
235
- };
236
-
237
312
  return (
238
313
  <MapIdContext.Provider value={id}>
239
- <View style={style}>
314
+ <View ref={containerRef} style={style}>
240
315
  <Map
241
316
  id={id}
242
317
  mapId={mapId}
@@ -246,8 +321,12 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
246
321
  maxZoom={maxZoom}
247
322
  gestureHandling={gestureHandling}
248
323
  disableDefaultUI
324
+ isFractionalZoomEnabled
249
325
  tilt={pitchEnabled === false ? 0 : undefined}
250
- style={mapStyle}
326
+ onDragstart={handleDragStart}
327
+ onDragend={handleDragEnd}
328
+ onCameraChanged={handleCameraChanged}
329
+ onIdle={handleIdle}
251
330
  >
252
331
  <UserLocationMarker enabled={userLocationEnabled} />
253
332
  {children}