@lugg/maps 0.2.0-alpha.10 → 0.2.0-alpha.12

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.
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ export const MapIdContext = /*#__PURE__*/createContext(null);
5
+ export const useMapId = () => useContext(MapIdContext);
6
+ //# sourceMappingURL=MapIdContext.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","MapIdContext","useMapId"],"sourceRoot":"../../src","sources":["MapIdContext.web.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAEjD,OAAO,MAAMC,YAAY,gBAAGF,aAAa,CAAgB,IAAI,CAAC;AAE9D,OAAO,MAAMG,QAAQ,GAAGA,CAAA,KAAMF,UAAU,CAACC,YAAY,CAAC","ignoreList":[]}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import { Children, Component, isValidElement, useEffect, useRef, useState } from 'react';
3
+ import { Children, forwardRef, isValidElement, 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";
7
7
  import { Polyline } from "./components/Polyline.web.js";
8
+ import { MapIdContext } from "./MapIdContext.web.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- // Map-specific component types that render inside the Google Map
10
10
  const MAP_COMPONENT_TYPES = new Set([Marker, Polyline]);
11
11
  const isMapComponent = child => MAP_COMPONENT_TYPES.has(child.type);
12
12
  const createSyntheticEvent = nativeEvent => ({
@@ -70,22 +70,87 @@ function UserLocationMarker({
70
70
  })
71
71
  });
72
72
  }
73
- function MapController({
74
- onMapReady,
75
- onCameraMove,
76
- onCameraIdle,
77
- onReady
78
- }) {
79
- const map = useMap();
73
+ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
74
+ const {
75
+ mapId = 'DEMO_MAP_ID',
76
+ initialCoordinate,
77
+ initialZoom = 10,
78
+ minZoom,
79
+ maxZoom,
80
+ zoomEnabled = true,
81
+ scrollEnabled = true,
82
+ pitchEnabled = true,
83
+ padding,
84
+ userLocationEnabled,
85
+ onCameraMove,
86
+ onCameraIdle,
87
+ onReady,
88
+ children,
89
+ style
90
+ } = props;
91
+ const id = useId();
92
+ const map = useMap(id);
80
93
  const readyFired = useRef(false);
94
+ useImperativeHandle(ref, () => ({
95
+ moveCamera(coordinate, options) {
96
+ if (!map) return;
97
+ const {
98
+ zoom,
99
+ duration = -1
100
+ } = options;
101
+ const center = {
102
+ lat: coordinate.latitude,
103
+ lng: coordinate.longitude
104
+ };
105
+ if (duration === 0) {
106
+ map.moveCamera({
107
+ center,
108
+ zoom
109
+ });
110
+ } else {
111
+ const currentZoom = map.getZoom();
112
+ const zoomChanged = zoom !== undefined && zoom !== currentZoom;
113
+ if (zoomChanged) {
114
+ map.setZoom(zoom);
115
+ }
116
+ map.panTo(center);
117
+ }
118
+ },
119
+ fitCoordinates(coordinates, options) {
120
+ const first = coordinates[0];
121
+ if (!map || !first) return;
122
+ const {
123
+ padding: fitPadding,
124
+ duration = -1
125
+ } = options ?? {};
126
+ if (coordinates.length === 1) {
127
+ this.moveCamera(first, {
128
+ zoom: initialZoom,
129
+ duration
130
+ });
131
+ return;
132
+ }
133
+ const bounds = new google.maps.LatLngBounds();
134
+ coordinates.forEach(coord => {
135
+ bounds.extend({
136
+ lat: coord.latitude,
137
+ lng: coord.longitude
138
+ });
139
+ });
140
+ map.fitBounds(bounds, {
141
+ top: fitPadding?.top ?? 0,
142
+ left: fitPadding?.left ?? 0,
143
+ bottom: fitPadding?.bottom ?? 0,
144
+ right: fitPadding?.right ?? 0
145
+ });
146
+ }
147
+ }), [map, initialZoom]);
81
148
  useEffect(() => {
82
- if (!map) return;
83
- onMapReady(map);
84
- if (!readyFired.current) {
149
+ if (map && !readyFired.current) {
85
150
  readyFired.current = true;
86
151
  onReady?.();
87
152
  }
88
- }, [map, onMapReady, onReady]);
153
+ }, [map, onReady]);
89
154
  useEffect(() => {
90
155
  if (!map) return;
91
156
  const createPayload = gesture => {
@@ -100,8 +165,10 @@ function MapController({
100
165
  };
101
166
  };
102
167
  let isDragging = false;
168
+ let wasGesture = false;
103
169
  const dragStartListener = map.addListener('dragstart', () => {
104
170
  isDragging = true;
171
+ wasGesture = true;
105
172
  });
106
173
  const dragEndListener = map.addListener('dragend', () => {
107
174
  isDragging = false;
@@ -110,7 +177,8 @@ function MapController({
110
177
  onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
111
178
  });
112
179
  const idleListener = map.addListener('idle', () => {
113
- onCameraIdle?.(createSyntheticEvent(createPayload(false)));
180
+ onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
181
+ wasGesture = false;
114
182
  });
115
183
  return () => {
116
184
  google.maps.event.removeListener(dragStartListener);
@@ -119,148 +187,55 @@ function MapController({
119
187
  google.maps.event.removeListener(idleListener);
120
188
  };
121
189
  }, [map, onCameraMove, onCameraIdle]);
122
- return null;
123
- }
124
- export class MapView extends Component {
125
- static defaultProps = {
126
- provider: 'google',
127
- mapId: 'DEMO_MAP_ID',
128
- initialZoom: 10,
129
- zoomEnabled: true,
130
- scrollEnabled: true,
131
- rotateEnabled: true,
132
- pitchEnabled: true
133
- };
134
- mapInstance = null;
135
- handleMapReady = map => {
136
- this.mapInstance = map;
137
- };
138
- moveCamera(coordinate, options) {
139
- const map = this.mapInstance;
140
- if (!map) return;
141
- const {
142
- zoom,
143
- duration = -1
144
- } = options;
145
- const center = {
146
- lat: coordinate.latitude,
147
- lng: coordinate.longitude
148
- };
149
- if (duration === 0) {
150
- map.moveCamera({
151
- center,
152
- zoom
153
- });
190
+ const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'none' : 'auto';
191
+ const defaultCenter = initialCoordinate ? {
192
+ lat: initialCoordinate.latitude,
193
+ lng: initialCoordinate.longitude
194
+ } : undefined;
195
+ const mapChildren = [];
196
+ const overlayChildren = [];
197
+ Children.forEach(children, child => {
198
+ if (! /*#__PURE__*/isValidElement(child)) return;
199
+ if (isMapComponent(child)) {
200
+ mapChildren.push(child);
154
201
  } else {
155
- const currentZoom = map.getZoom();
156
- const zoomChanged = zoom !== undefined && zoom !== currentZoom;
157
- if (zoomChanged) {
158
- map.setZoom(zoom);
159
- }
160
- map.panTo(center);
161
- }
162
- }
163
- fitCoordinates(coordinates, options) {
164
- const map = this.mapInstance;
165
- const first = coordinates[0];
166
- if (!map || !first) return;
167
- const {
168
- padding,
169
- duration = -1
170
- } = options ?? {};
171
- if (coordinates.length === 1) {
172
- const zoom = this.props.initialZoom ?? 10;
173
- this.moveCamera(first, {
174
- zoom,
175
- duration
176
- });
177
- return;
202
+ overlayChildren.push(child);
178
203
  }
179
- const bounds = new google.maps.LatLngBounds();
180
- coordinates.forEach(coord => {
181
- bounds.extend({
182
- lat: coord.latitude,
183
- lng: coord.longitude
184
- });
185
- });
186
- map.fitBounds(bounds, {
187
- top: padding?.top ?? 0,
188
- left: padding?.left ?? 0,
189
- bottom: padding?.bottom ?? 0,
190
- right: padding?.right ?? 0
191
- });
192
- }
193
- render() {
194
- const {
195
- mapId,
196
- initialCoordinate,
197
- initialZoom,
198
- minZoom,
199
- maxZoom,
200
- zoomEnabled,
201
- scrollEnabled,
202
- pitchEnabled,
203
- padding,
204
- userLocationEnabled,
205
- onCameraMove,
206
- onCameraIdle,
207
- onReady,
208
- children,
209
- style
210
- } = this.props;
211
- const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'none' : 'auto';
212
- const defaultCenter = initialCoordinate ? {
213
- lat: initialCoordinate.latitude,
214
- lng: initialCoordinate.longitude
215
- } : undefined;
216
-
217
- // Separate map children (Marker, Polyline) from overlay children (regular Views)
218
- const mapChildren = [];
219
- const overlayChildren = [];
220
- Children.forEach(children, child => {
221
- if (! /*#__PURE__*/isValidElement(child)) return;
222
- if (isMapComponent(child)) {
223
- mapChildren.push(child);
224
- } else {
225
- overlayChildren.push(child);
226
- }
227
- });
228
- const mapContainerStyle = {
229
- position: 'absolute',
230
- top: padding?.top ?? 0,
231
- left: padding?.left ?? 0,
232
- right: padding?.right ?? 0,
233
- bottom: padding?.bottom ?? 0
234
- };
235
- const mapStyle = {
236
- width: '100%',
237
- height: '100%'
238
- };
239
- return /*#__PURE__*/_jsxs(View, {
240
- style: style,
241
- children: [/*#__PURE__*/_jsx(View, {
242
- style: mapContainerStyle,
243
- children: /*#__PURE__*/_jsxs(Map, {
244
- mapId: mapId,
245
- defaultCenter: defaultCenter,
246
- defaultZoom: initialZoom,
247
- minZoom: minZoom,
248
- maxZoom: maxZoom,
249
- gestureHandling: gestureHandling,
250
- disableDefaultUI: true,
251
- tilt: pitchEnabled === false ? 0 : undefined,
252
- style: mapStyle,
253
- children: [/*#__PURE__*/_jsx(MapController, {
254
- onMapReady: this.handleMapReady,
255
- onCameraMove: onCameraMove,
256
- onCameraIdle: onCameraIdle,
257
- onReady: onReady
258
- }), /*#__PURE__*/_jsx(UserLocationMarker, {
204
+ });
205
+ const mapContainerStyle = {
206
+ position: 'absolute',
207
+ top: padding?.top ?? 0,
208
+ left: padding?.left ?? 0,
209
+ right: padding?.right ?? 0,
210
+ bottom: padding?.bottom ?? 0
211
+ };
212
+ const mapStyle = {
213
+ width: '100%',
214
+ height: '100%'
215
+ };
216
+ return /*#__PURE__*/_jsxs(View, {
217
+ style: style,
218
+ children: [/*#__PURE__*/_jsx(View, {
219
+ style: mapContainerStyle,
220
+ children: /*#__PURE__*/_jsx(Map, {
221
+ id: id,
222
+ mapId: mapId,
223
+ defaultCenter: defaultCenter,
224
+ defaultZoom: initialZoom,
225
+ minZoom: minZoom,
226
+ maxZoom: maxZoom,
227
+ gestureHandling: gestureHandling,
228
+ disableDefaultUI: true,
229
+ tilt: pitchEnabled === false ? 0 : undefined,
230
+ style: mapStyle,
231
+ children: /*#__PURE__*/_jsxs(MapIdContext.Provider, {
232
+ value: id,
233
+ children: [/*#__PURE__*/_jsx(UserLocationMarker, {
259
234
  enabled: userLocationEnabled
260
235
  }), mapChildren]
261
236
  })
262
- }), overlayChildren]
263
- });
264
- }
265
- }
237
+ })
238
+ }), overlayChildren]
239
+ });
240
+ });
266
241
  //# sourceMappingURL=MapView.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Children","Component","isValidElement","useEffect","useRef","useState","View","Map","useMap","Marker","Polyline","jsx","_jsx","jsxs","_jsxs","MAP_COMPONENT_TYPES","Set","isMapComponent","child","has","type","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","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","MapController","onMapReady","onCameraMove","onCameraIdle","onReady","map","readyFired","current","createPayload","gesture","center","getCenter","lat","lng","zoom","getZoom","isDragging","dragStartListener","addListener","dragEndListener","centerListener","idleListener","google","maps","event","removeListener","MapView","defaultProps","provider","mapId","initialZoom","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","mapInstance","handleMapReady","moveCamera","options","duration","currentZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","padding","length","props","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","render","initialCoordinate","minZoom","maxZoom","userLocationEnabled","gestureHandling","defaultCenter","mapChildren","overlayChildren","push","mapContainerStyle","mapStyle","defaultZoom","disableDefaultUI","tilt"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Children","forwardRef","isValidElement","useEffect","useId","useImperativeHandle","useRef","useState","View","Map","useMap","Marker","Polyline","MapIdContext","jsx","_jsx","jsxs","_jsxs","MAP_COMPONENT_TYPES","Set","isMapComponent","child","has","type","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","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","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","google","maps","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","current","createPayload","gesture","getCenter","isDragging","wasGesture","dragStartListener","addListener","dragEndListener","centerListener","idleListener","event","removeListener","gestureHandling","defaultCenter","mapChildren","overlayChildren","push","mapContainerStyle","mapStyle","defaultZoom","disableDefaultUI","tilt","Provider","value"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,34 +1,25 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
4
3
  import { AdvancedMarker } from '@vis.gl/react-google-maps';
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
- /**
7
- * Converts point to % anchor for web.
8
- * e.g. `0.5` to `-50%`
9
- */
10
5
  const toWebAnchor = value => `-${value * 100}%`;
11
- export class Marker extends React.Component {
12
- render() {
13
- const {
14
- coordinate,
15
- title,
16
- anchor,
17
- zIndex,
18
- children
19
- } = this.props;
20
- const position = {
6
+ export function Marker({
7
+ coordinate,
8
+ title,
9
+ anchor,
10
+ zIndex,
11
+ children
12
+ }) {
13
+ return /*#__PURE__*/_jsx(AdvancedMarker, {
14
+ position: {
21
15
  lat: coordinate.latitude,
22
16
  lng: coordinate.longitude
23
- };
24
- return /*#__PURE__*/_jsx(AdvancedMarker, {
25
- position: position,
26
- title: title,
27
- zIndex: zIndex,
28
- anchorLeft: anchor ? toWebAnchor(anchor.x) : undefined,
29
- anchorTop: anchor ? toWebAnchor(anchor.y) : undefined,
30
- children: children
31
- });
32
- }
17
+ },
18
+ title: title,
19
+ zIndex: zIndex,
20
+ anchorLeft: anchor ? toWebAnchor(anchor.x) : undefined,
21
+ anchorTop: anchor ? toWebAnchor(anchor.y) : undefined,
22
+ children: children
23
+ });
33
24
  }
34
25
  //# sourceMappingURL=Marker.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","AdvancedMarker","jsx","_jsx","toWebAnchor","value","Marker","Component","render","coordinate","title","anchor","zIndex","children","props","position","lat","latitude","lng","longitude","anchorLeft","x","undefined","anchorTop","y"],"sourceRoot":"../../../src","sources":["components/Marker.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3D;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAIC,KAAa,IAAK,IAAIA,KAAK,GAAG,GAAG,GAAG;AAEzD,OAAO,MAAMC,MAAM,SAASN,KAAK,CAACO,SAAS,CAAc;EACvDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,UAAU;MAAEC,KAAK;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IAElE,MAAMC,QAAQ,GAAG;MACfC,GAAG,EAAEP,UAAU,CAACQ,QAAQ;MACxBC,GAAG,EAAET,UAAU,CAACU;IAClB,CAAC;IAED,oBACEhB,IAAA,CAACF,cAAc;MACbc,QAAQ,EAAEA,QAAS;MACnBL,KAAK,EAAEA,KAAM;MACbE,MAAM,EAAEA,MAAO;MACfQ,UAAU,EAAET,MAAM,GAAGP,WAAW,CAACO,MAAM,CAACU,CAAC,CAAC,GAAGC,SAAU;MACvDC,SAAS,EAAEZ,MAAM,GAAGP,WAAW,CAACO,MAAM,CAACa,CAAC,CAAC,GAAGF,SAAU;MAAAT,QAAA,EAErDA;IAAQ,CACK,CAAC;EAErB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AdvancedMarker","jsx","_jsx","toWebAnchor","value","Marker","coordinate","title","anchor","zIndex","children","position","lat","latitude","lng","longitude","anchorLeft","x","undefined","anchorTop","y"],"sourceRoot":"../../../src","sources":["components/Marker.web.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3D,MAAMC,WAAW,GAAIC,KAAa,IAAK,IAAIA,KAAK,GAAG,GAAG,GAAG;AAEzD,OAAO,SAASC,MAAMA,CAAC;EACrBC,UAAU;EACVC,KAAK;EACLC,MAAM;EACNC,MAAM;EACNC;AACW,CAAC,EAAE;EACd,oBACER,IAAA,CAACF,cAAc;IACbW,QAAQ,EAAE;MAAEC,GAAG,EAAEN,UAAU,CAACO,QAAQ;MAAEC,GAAG,EAAER,UAAU,CAACS;IAAU,CAAE;IAClER,KAAK,EAAEA,KAAM;IACbE,MAAM,EAAEA,MAAO;IACfO,UAAU,EAAER,MAAM,GAAGL,WAAW,CAACK,MAAM,CAACS,CAAC,CAAC,GAAGC,SAAU;IACvDC,SAAS,EAAEX,MAAM,GAAGL,WAAW,CAACK,MAAM,CAACY,CAAC,CAAC,GAAGF,SAAU;IAAAR,QAAA,EAErDA;EAAQ,CACK,CAAC;AAErB","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { Component, useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { useMap } from '@vis.gl/react-google-maps';
5
- import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { useMapId } from "../MapIdContext.web.js";
6
6
  const ANIMATION_DURATION = 1500;
7
7
  function interpolateColor(color1, color2, t) {
8
8
  const hex = c => parseInt(c, 16);
@@ -26,7 +26,7 @@ function getGradientColor(colors, position) {
26
26
  const t = scaledPos - index;
27
27
  return interpolateColor(colors[index], colors[index + 1], t);
28
28
  }
29
- function PolylineImpl({
29
+ export function Polyline({
30
30
  coordinates,
31
31
  strokeColors,
32
32
  strokeWidth = 1,
@@ -34,7 +34,8 @@ function PolylineImpl({
34
34
  zIndex
35
35
  }) {
36
36
  const resolvedZIndex = zIndex ?? (animated ? 1 : 0);
37
- const map = useMap();
37
+ const mapId = useMapId();
38
+ const map = useMap(mapId);
38
39
  const polylinesRef = useRef([]);
39
40
  const animationRef = useRef(0);
40
41
  const colors = useMemo(() => strokeColors && strokeColors.length > 0 ? strokeColors : ['#000000'], [strokeColors]);
@@ -167,11 +168,4 @@ function PolylineImpl({
167
168
  }, [coordinates, animated, hasGradient, updatePath, mapReady]);
168
169
  return null;
169
170
  }
170
- export class Polyline extends Component {
171
- render() {
172
- return /*#__PURE__*/_jsx(PolylineImpl, {
173
- ...this.props
174
- });
175
- }
176
- }
177
171
  //# sourceMappingURL=Polyline.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Component","useCallback","useEffect","useMemo","useRef","useState","useMap","jsx","_jsx","ANIMATION_DURATION","interpolateColor","color1","color2","t","hex","c","parseInt","r1","slice","g1","b1","r2","g2","b2","r","Math","round","g","b","toString","padStart","getGradientColor","colors","position","length","scaledPos","index","floor","PolylineImpl","coordinates","strokeColors","strokeWidth","animated","zIndex","resolvedZIndex","map","polylinesRef","animationRef","hasGradient","propsRef","mapReady","setMapReady","current","updatePath","path","currentMap","currentColors","currentStrokeWidth","currentHasGradient","currentZIndex","neededSegments","existing","i","segmentPath","color","segment","setPath","setOptions","strokeColor","push","google","maps","Polyline","strokeWeight","strokeOpacity","setMap","polylines","cancelAnimationFrame","forEach","p","fullPath","lat","latitude","lng","longitude","totalPoints","cycleDuration","animate","time","progress","startIdx","endIdx","partialPath","startFloor","endFloor","frac","from","to","min","requestAnimationFrame","render","props"],"sourceRoot":"../../../src","sources":["components/Polyline.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useMap","useMapId","ANIMATION_DURATION","interpolateColor","color1","color2","t","hex","c","parseInt","r1","slice","g1","b1","r2","g2","b2","r","Math","round","g","b","toString","padStart","getGradientColor","colors","position","length","scaledPos","index","floor","Polyline","coordinates","strokeColors","strokeWidth","animated","zIndex","resolvedZIndex","mapId","map","polylinesRef","animationRef","hasGradient","propsRef","mapReady","setMapReady","current","updatePath","path","currentMap","currentColors","currentStrokeWidth","currentHasGradient","currentZIndex","neededSegments","existing","i","segmentPath","color","segment","setPath","setOptions","strokeColor","push","google","maps","strokeWeight","strokeOpacity","setMap","polylines","cancelAnimationFrame","forEach","p","fullPath","lat","latitude","lng","longitude","totalPoints","cycleDuration","animate","time","progress","startIdx","endIdx","partialPath","startFloor","endFloor","frac","from","to","min","requestAnimationFrame"],"sourceRoot":"../../../src","sources":["components/Polyline.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare const MapIdContext: import("react").Context<string | null>;
2
+ export declare const useMapId: () => string | null;
3
+ //# sourceMappingURL=MapIdContext.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapIdContext.web.d.ts","sourceRoot":"","sources":["../../../src/MapIdContext.web.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,wCAAqC,CAAC;AAE/D,eAAO,MAAM,QAAQ,qBAAiC,CAAC"}
@@ -1,12 +1,3 @@
1
- import { Component } from 'react';
2
- import type { MapViewProps, MapViewRef, MoveCameraOptions, FitCoordinatesOptions } from './MapView.types';
3
- import type { Coordinate } from './types';
4
- export declare class MapView extends Component<MapViewProps> implements MapViewRef {
5
- static defaultProps: Partial<MapViewProps>;
6
- private mapInstance;
7
- private handleMapReady;
8
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions): void;
9
- fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions): void;
10
- render(): import("react/jsx-runtime").JSX.Element;
11
- }
1
+ import type { MapViewProps, MapViewRef } from './MapView.types';
2
+ export declare const MapView: import("react").ForwardRefExoticComponent<MapViewProps & import("react").RefAttributes<MapViewRef>>;
12
3
  //# sourceMappingURL=MapView.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAQV,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmJ1C,qBAAa,OAAQ,SAAQ,SAAS,CAAC,YAAY,CAAE,YAAW,UAAU;IACxE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAQxC;IAEF,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,cAAc,CAEpB;IAEF,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB;IAoB7D,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB;IA0BzE,MAAM;CAoFP"}
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;AAyEzB,eAAO,MAAM,OAAO,qGA6LlB,CAAC"}
@@ -1,6 +1,3 @@
1
- import React from 'react';
2
1
  import type { MarkerProps } from './Marker';
3
- export declare class Marker extends React.Component<MarkerProps> {
4
- render(): import("react/jsx-runtime").JSX.Element;
5
- }
2
+ export declare function Marker({ coordinate, title, anchor, zIndex, children, }: MarkerProps): import("react/jsx-runtime").JSX.Element;
6
3
  //# sourceMappingURL=Marker.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ5C,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IACtD,MAAM;CAoBP"}
1
+ {"version":3,"file":"Marker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,wBAAgB,MAAM,CAAC,EACrB,UAAU,EACV,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,WAAW,2CAYb"}
@@ -1,6 +1,3 @@
1
- import { Component } from 'react';
2
1
  import type { PolylineProps } from './Polyline';
3
- export declare class Polyline extends Component<PolylineProps> {
4
- render(): import("react/jsx-runtime").JSX.Element;
5
- }
2
+ export declare function Polyline({ coordinates, strokeColors, strokeWidth, animated, zIndex, }: PolylineProps): null;
6
3
  //# sourceMappingURL=Polyline.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Polyline.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgNhD,qBAAa,QAAS,SAAQ,SAAS,CAAC,aAAa,CAAC;IACpD,MAAM;CAGP"}
1
+ {"version":3,"file":"Polyline.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Polyline.web.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkChD,wBAAgB,QAAQ,CAAC,EACvB,WAAW,EACX,YAAY,EACZ,WAAe,EACf,QAAQ,EACR,MAAM,GACP,EAAE,aAAa,QAuKf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lugg/maps",
3
- "version": "0.2.0-alpha.10",
3
+ "version": "0.2.0-alpha.12",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -0,0 +1,5 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ export const MapIdContext = createContext<string | null>(null);
4
+
5
+ export const useMapId = () => useContext(MapIdContext);
@@ -1,8 +1,10 @@
1
1
  import {
2
2
  Children,
3
- Component,
3
+ forwardRef,
4
4
  isValidElement,
5
5
  useEffect,
6
+ useId,
7
+ useImperativeHandle,
6
8
  useRef,
7
9
  useState,
8
10
  type CSSProperties,
@@ -14,6 +16,7 @@ import { View } from 'react-native';
14
16
  import { Map, useMap } from '@vis.gl/react-google-maps';
15
17
  import { Marker } from './components/Marker.web';
16
18
  import { Polyline } from './components/Polyline.web';
19
+ import { MapIdContext } from './MapIdContext.web';
17
20
 
18
21
  import type {
19
22
  MapViewProps,
@@ -24,7 +27,6 @@ import type {
24
27
  } from './MapView.types';
25
28
  import type { Coordinate } from './types';
26
29
 
27
- // Map-specific component types that render inside the Google Map
28
30
  const MAP_COMPONENT_TYPES = new Set([Marker, Polyline]);
29
31
 
30
32
  const isMapComponent = (child: ReactElement): boolean =>
@@ -49,17 +51,6 @@ const createSyntheticEvent = <T,>(nativeEvent: T): NativeSyntheticEvent<T> =>
49
51
  type: '',
50
52
  } as unknown as NativeSyntheticEvent<T>);
51
53
 
52
- interface MapControllerProps {
53
- onMapReady: (map: google.maps.Map) => void;
54
- onCameraMove?: (event: NativeSyntheticEvent<CameraEventPayload>) => void;
55
- onCameraIdle?: (event: NativeSyntheticEvent<CameraEventPayload>) => void;
56
- onReady?: () => void;
57
- }
58
-
59
- interface UserLocationMarkerProps {
60
- enabled?: boolean;
61
- }
62
-
63
54
  const userLocationDotStyle: CSSProperties = {
64
55
  width: 16,
65
56
  height: 16,
@@ -69,7 +60,7 @@ const userLocationDotStyle: CSSProperties = {
69
60
  boxShadow: '0 1px 4px rgba(0,0,0,0.3)',
70
61
  };
71
62
 
72
- function UserLocationMarker({ enabled }: UserLocationMarkerProps) {
63
+ function UserLocationMarker({ enabled }: { enabled?: boolean }) {
73
64
  const [coordinate, setCoordinate] = useState<Coordinate | null>(null);
74
65
 
75
66
  useEffect(() => {
@@ -106,24 +97,90 @@ function UserLocationMarker({ enabled }: UserLocationMarkerProps) {
106
97
  );
107
98
  }
108
99
 
109
- function MapController({
110
- onMapReady,
111
- onCameraMove,
112
- onCameraIdle,
113
- onReady,
114
- }: MapControllerProps) {
115
- const map = useMap();
100
+ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
101
+ props,
102
+ ref
103
+ ) {
104
+ const {
105
+ mapId = 'DEMO_MAP_ID',
106
+ initialCoordinate,
107
+ initialZoom = 10,
108
+ minZoom,
109
+ maxZoom,
110
+ zoomEnabled = true,
111
+ scrollEnabled = true,
112
+ pitchEnabled = true,
113
+ padding,
114
+ userLocationEnabled,
115
+ onCameraMove,
116
+ onCameraIdle,
117
+ onReady,
118
+ children,
119
+ style,
120
+ } = props;
121
+
122
+ const id = useId();
123
+ const map = useMap(id);
116
124
  const readyFired = useRef(false);
117
125
 
118
- useEffect(() => {
119
- if (!map) return;
120
- onMapReady(map);
126
+ useImperativeHandle(
127
+ ref,
128
+ () => ({
129
+ moveCamera(coordinate: Coordinate, options: MoveCameraOptions) {
130
+ if (!map) return;
131
+
132
+ const { zoom, duration = -1 } = options;
133
+ const center = { lat: coordinate.latitude, lng: coordinate.longitude };
134
+
135
+ if (duration === 0) {
136
+ map.moveCamera({ center, zoom });
137
+ } else {
138
+ const currentZoom = map.getZoom();
139
+ const zoomChanged = zoom !== undefined && zoom !== currentZoom;
140
+
141
+ if (zoomChanged) {
142
+ map.setZoom(zoom);
143
+ }
144
+ map.panTo(center);
145
+ }
146
+ },
147
+
148
+ fitCoordinates(
149
+ coordinates: Coordinate[],
150
+ options?: FitCoordinatesOptions
151
+ ) {
152
+ const first = coordinates[0];
153
+ if (!map || !first) return;
154
+
155
+ const { padding: fitPadding, duration = -1 } = options ?? {};
156
+
157
+ if (coordinates.length === 1) {
158
+ this.moveCamera(first, { zoom: initialZoom, duration });
159
+ return;
160
+ }
161
+
162
+ const bounds = new google.maps.LatLngBounds();
163
+ coordinates.forEach((coord) => {
164
+ bounds.extend({ lat: coord.latitude, lng: coord.longitude });
165
+ });
166
+
167
+ map.fitBounds(bounds, {
168
+ top: fitPadding?.top ?? 0,
169
+ left: fitPadding?.left ?? 0,
170
+ bottom: fitPadding?.bottom ?? 0,
171
+ right: fitPadding?.right ?? 0,
172
+ });
173
+ },
174
+ }),
175
+ [map, initialZoom]
176
+ );
121
177
 
122
- if (!readyFired.current) {
178
+ useEffect(() => {
179
+ if (map && !readyFired.current) {
123
180
  readyFired.current = true;
124
181
  onReady?.();
125
182
  }
126
- }, [map, onMapReady, onReady]);
183
+ }, [map, onReady]);
127
184
 
128
185
  useEffect(() => {
129
186
  if (!map) return;
@@ -141,9 +198,11 @@ function MapController({
141
198
  };
142
199
 
143
200
  let isDragging = false;
201
+ let wasGesture = false;
144
202
 
145
203
  const dragStartListener = map.addListener('dragstart', () => {
146
204
  isDragging = true;
205
+ wasGesture = true;
147
206
  });
148
207
 
149
208
  const dragEndListener = map.addListener('dragend', () => {
@@ -155,7 +214,8 @@ function MapController({
155
214
  });
156
215
 
157
216
  const idleListener = map.addListener('idle', () => {
158
- onCameraIdle?.(createSyntheticEvent(createPayload(false)));
217
+ onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
218
+ wasGesture = false;
159
219
  });
160
220
 
161
221
  return () => {
@@ -166,154 +226,64 @@ function MapController({
166
226
  };
167
227
  }, [map, onCameraMove, onCameraIdle]);
168
228
 
169
- return null;
170
- }
171
-
172
- export class MapView extends Component<MapViewProps> implements MapViewRef {
173
- static defaultProps: Partial<MapViewProps> = {
174
- provider: 'google',
175
- mapId: 'DEMO_MAP_ID',
176
- initialZoom: 10,
177
- zoomEnabled: true,
178
- scrollEnabled: true,
179
- rotateEnabled: true,
180
- pitchEnabled: true,
181
- };
229
+ const gestureHandling =
230
+ scrollEnabled === false && zoomEnabled === false
231
+ ? 'none'
232
+ : scrollEnabled === false
233
+ ? 'none'
234
+ : 'auto';
182
235
 
183
- private mapInstance: google.maps.Map | null = null;
236
+ const defaultCenter = initialCoordinate
237
+ ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
238
+ : undefined;
184
239
 
185
- private handleMapReady = (map: google.maps.Map) => {
186
- this.mapInstance = map;
187
- };
188
-
189
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions) {
190
- const map = this.mapInstance;
191
- if (!map) return;
240
+ const mapChildren: ReactNode[] = [];
241
+ const overlayChildren: ReactNode[] = [];
192
242
 
193
- const { zoom, duration = -1 } = options;
194
- const center = { lat: coordinate.latitude, lng: coordinate.longitude };
195
-
196
- if (duration === 0) {
197
- map.moveCamera({ center, zoom });
243
+ Children.forEach(children, (child) => {
244
+ if (!isValidElement(child)) return;
245
+ if (isMapComponent(child)) {
246
+ mapChildren.push(child);
198
247
  } else {
199
- const currentZoom = map.getZoom();
200
- const zoomChanged = zoom !== undefined && zoom !== currentZoom;
201
-
202
- if (zoomChanged) {
203
- map.setZoom(zoom);
204
- }
205
- map.panTo(center);
206
- }
207
- }
208
-
209
- fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions) {
210
- const map = this.mapInstance;
211
- const first = coordinates[0];
212
- if (!map || !first) return;
213
-
214
- const { padding, duration = -1 } = options ?? {};
215
-
216
- if (coordinates.length === 1) {
217
- const zoom = this.props.initialZoom ?? 10;
218
- this.moveCamera(first, { zoom, duration });
219
- return;
248
+ overlayChildren.push(child);
220
249
  }
250
+ });
251
+
252
+ const mapContainerStyle: ViewStyle = {
253
+ position: 'absolute',
254
+ top: padding?.top ?? 0,
255
+ left: padding?.left ?? 0,
256
+ right: padding?.right ?? 0,
257
+ bottom: padding?.bottom ?? 0,
258
+ };
221
259
 
222
- const bounds = new google.maps.LatLngBounds();
223
- coordinates.forEach((coord) => {
224
- bounds.extend({ lat: coord.latitude, lng: coord.longitude });
225
- });
226
-
227
- map.fitBounds(bounds, {
228
- top: padding?.top ?? 0,
229
- left: padding?.left ?? 0,
230
- bottom: padding?.bottom ?? 0,
231
- right: padding?.right ?? 0,
232
- });
233
- }
234
-
235
- render() {
236
- const {
237
- mapId,
238
- initialCoordinate,
239
- initialZoom,
240
- minZoom,
241
- maxZoom,
242
- zoomEnabled,
243
- scrollEnabled,
244
- pitchEnabled,
245
- padding,
246
- userLocationEnabled,
247
- onCameraMove,
248
- onCameraIdle,
249
- onReady,
250
- children,
251
- style,
252
- } = this.props;
253
-
254
- const gestureHandling =
255
- scrollEnabled === false && zoomEnabled === false
256
- ? 'none'
257
- : scrollEnabled === false
258
- ? 'none'
259
- : 'auto';
260
-
261
- const defaultCenter = initialCoordinate
262
- ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
263
- : undefined;
264
-
265
- // Separate map children (Marker, Polyline) from overlay children (regular Views)
266
- const mapChildren: ReactNode[] = [];
267
- const overlayChildren: ReactNode[] = [];
268
-
269
- Children.forEach(children, (child) => {
270
- if (!isValidElement(child)) return;
271
- if (isMapComponent(child)) {
272
- mapChildren.push(child);
273
- } else {
274
- overlayChildren.push(child);
275
- }
276
- });
277
-
278
- const mapContainerStyle: ViewStyle = {
279
- position: 'absolute',
280
- top: padding?.top ?? 0,
281
- left: padding?.left ?? 0,
282
- right: padding?.right ?? 0,
283
- bottom: padding?.bottom ?? 0,
284
- };
285
-
286
- const mapStyle: CSSProperties = {
287
- width: '100%',
288
- height: '100%',
289
- };
260
+ const mapStyle: CSSProperties = {
261
+ width: '100%',
262
+ height: '100%',
263
+ };
290
264
 
291
- return (
292
- <View style={style}>
293
- <View style={mapContainerStyle}>
294
- <Map
295
- mapId={mapId}
296
- defaultCenter={defaultCenter}
297
- defaultZoom={initialZoom}
298
- minZoom={minZoom}
299
- maxZoom={maxZoom}
300
- gestureHandling={gestureHandling}
301
- disableDefaultUI
302
- tilt={pitchEnabled === false ? 0 : undefined}
303
- style={mapStyle}
304
- >
305
- <MapController
306
- onMapReady={this.handleMapReady}
307
- onCameraMove={onCameraMove}
308
- onCameraIdle={onCameraIdle}
309
- onReady={onReady}
310
- />
265
+ return (
266
+ <View style={style}>
267
+ <View style={mapContainerStyle}>
268
+ <Map
269
+ id={id}
270
+ mapId={mapId}
271
+ defaultCenter={defaultCenter}
272
+ defaultZoom={initialZoom}
273
+ minZoom={minZoom}
274
+ maxZoom={maxZoom}
275
+ gestureHandling={gestureHandling}
276
+ disableDefaultUI
277
+ tilt={pitchEnabled === false ? 0 : undefined}
278
+ style={mapStyle}
279
+ >
280
+ <MapIdContext.Provider value={id}>
311
281
  <UserLocationMarker enabled={userLocationEnabled} />
312
282
  {mapChildren}
313
- </Map>
314
- </View>
315
- {overlayChildren}
283
+ </MapIdContext.Provider>
284
+ </Map>
316
285
  </View>
317
- );
318
- }
319
- }
286
+ {overlayChildren}
287
+ </View>
288
+ );
289
+ });
@@ -1,32 +1,24 @@
1
- import React from 'react';
2
1
  import { AdvancedMarker } from '@vis.gl/react-google-maps';
3
2
  import type { MarkerProps } from './Marker';
4
3
 
5
- /**
6
- * Converts point to % anchor for web.
7
- * e.g. `0.5` to `-50%`
8
- */
9
4
  const toWebAnchor = (value: number) => `-${value * 100}%`;
10
5
 
11
- export class Marker extends React.Component<MarkerProps> {
12
- render() {
13
- const { coordinate, title, anchor, zIndex, children } = this.props;
14
-
15
- const position = {
16
- lat: coordinate.latitude,
17
- lng: coordinate.longitude,
18
- };
19
-
20
- return (
21
- <AdvancedMarker
22
- position={position}
23
- title={title}
24
- zIndex={zIndex}
25
- anchorLeft={anchor ? toWebAnchor(anchor.x) : undefined}
26
- anchorTop={anchor ? toWebAnchor(anchor.y) : undefined}
27
- >
28
- {children}
29
- </AdvancedMarker>
30
- );
31
- }
6
+ export function Marker({
7
+ coordinate,
8
+ title,
9
+ anchor,
10
+ zIndex,
11
+ children,
12
+ }: MarkerProps) {
13
+ return (
14
+ <AdvancedMarker
15
+ position={{ lat: coordinate.latitude, lng: coordinate.longitude }}
16
+ title={title}
17
+ zIndex={zIndex}
18
+ anchorLeft={anchor ? toWebAnchor(anchor.x) : undefined}
19
+ anchorTop={anchor ? toWebAnchor(anchor.y) : undefined}
20
+ >
21
+ {children}
22
+ </AdvancedMarker>
23
+ );
32
24
  }
@@ -1,12 +1,6 @@
1
- import {
2
- Component,
3
- useCallback,
4
- useEffect,
5
- useMemo,
6
- useRef,
7
- useState,
8
- } from 'react';
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
2
  import { useMap } from '@vis.gl/react-google-maps';
3
+ import { useMapId } from '../MapIdContext.web';
10
4
  import type { PolylineProps } from './Polyline';
11
5
 
12
6
  const ANIMATION_DURATION = 1500;
@@ -41,7 +35,7 @@ function getGradientColor(colors: string[], position: number): string {
41
35
  return interpolateColor(colors[index]!, colors[index + 1]!, t);
42
36
  }
43
37
 
44
- function PolylineImpl({
38
+ export function Polyline({
45
39
  coordinates,
46
40
  strokeColors,
47
41
  strokeWidth = 1,
@@ -49,7 +43,8 @@ function PolylineImpl({
49
43
  zIndex,
50
44
  }: PolylineProps) {
51
45
  const resolvedZIndex = zIndex ?? (animated ? 1 : 0);
52
- const map = useMap();
46
+ const mapId = useMapId();
47
+ const map = useMap(mapId);
53
48
  const polylinesRef = useRef<google.maps.Polyline[]>([]);
54
49
  const animationRef = useRef<number>(0);
55
50
 
@@ -214,9 +209,3 @@ function PolylineImpl({
214
209
 
215
210
  return null;
216
211
  }
217
-
218
- export class Polyline extends Component<PolylineProps> {
219
- render() {
220
- return <PolylineImpl {...this.props} />;
221
- }
222
- }