@lugg/maps 0.2.0-alpha.5 → 0.2.0-alpha.7

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.
Files changed (61) hide show
  1. package/README.md +17 -4
  2. package/android/src/main/java/com/luggmaps/LuggGoogleMapView.kt +2 -5
  3. package/android/src/main/java/com/luggmaps/LuggMarkerView.kt +7 -1
  4. package/android/src/main/java/com/luggmaps/LuggMarkerViewManager.kt +6 -0
  5. package/ios/LuggAppleMapView.mm +8 -0
  6. package/ios/LuggGoogleMapView.mm +2 -0
  7. package/ios/LuggMarkerView.h +2 -0
  8. package/ios/LuggMarkerView.mm +13 -0
  9. package/lib/module/MapProvider.js +13 -0
  10. package/lib/module/MapProvider.js.map +1 -0
  11. package/lib/module/MapProvider.types.js +4 -0
  12. package/lib/module/MapProvider.types.js.map +1 -0
  13. package/lib/module/MapProvider.web.js +14 -0
  14. package/lib/module/MapProvider.web.js.map +1 -0
  15. package/lib/module/MapView.web.js +212 -0
  16. package/lib/module/MapView.web.js.map +1 -0
  17. package/lib/module/components/Marker.js +4 -1
  18. package/lib/module/components/Marker.js.map +1 -1
  19. package/lib/module/components/Marker.web.js +34 -0
  20. package/lib/module/components/Marker.web.js.map +1 -0
  21. package/lib/module/components/Polyline.web.js +171 -0
  22. package/lib/module/components/Polyline.web.js.map +1 -0
  23. package/lib/module/components/index.js +2 -2
  24. package/lib/module/components/index.js.map +1 -1
  25. package/lib/module/components/index.web.js +5 -0
  26. package/lib/module/components/index.web.js.map +1 -0
  27. package/lib/module/index.js +3 -2
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/index.web.js +6 -0
  30. package/lib/module/index.web.js.map +1 -0
  31. package/lib/typescript/src/MapProvider.d.ts +8 -0
  32. package/lib/typescript/src/MapProvider.d.ts.map +1 -0
  33. package/lib/typescript/src/MapProvider.types.d.ts +16 -0
  34. package/lib/typescript/src/MapProvider.types.d.ts.map +1 -0
  35. package/lib/typescript/src/MapProvider.web.d.ts +3 -0
  36. package/lib/typescript/src/MapProvider.web.d.ts.map +1 -0
  37. package/lib/typescript/src/MapView.web.d.ts +12 -0
  38. package/lib/typescript/src/MapView.web.d.ts.map +1 -0
  39. package/lib/typescript/src/components/Marker.d.ts +4 -0
  40. package/lib/typescript/src/components/Marker.d.ts.map +1 -1
  41. package/lib/typescript/src/components/Marker.web.d.ts +6 -0
  42. package/lib/typescript/src/components/Marker.web.d.ts.map +1 -0
  43. package/lib/typescript/src/components/Polyline.web.d.ts +6 -0
  44. package/lib/typescript/src/components/Polyline.web.d.ts.map +1 -0
  45. package/lib/typescript/src/components/index.web.d.ts +5 -0
  46. package/lib/typescript/src/components/index.web.d.ts.map +1 -0
  47. package/lib/typescript/src/index.d.ts +3 -1
  48. package/lib/typescript/src/index.d.ts.map +1 -1
  49. package/lib/typescript/src/index.web.d.ts +7 -0
  50. package/lib/typescript/src/index.web.d.ts.map +1 -0
  51. package/package.json +13 -1
  52. package/src/MapProvider.tsx +10 -0
  53. package/src/MapProvider.types.ts +16 -0
  54. package/src/MapProvider.web.tsx +6 -0
  55. package/src/MapView.web.tsx +255 -0
  56. package/src/components/Marker.tsx +6 -2
  57. package/src/components/Marker.web.tsx +32 -0
  58. package/src/components/Polyline.web.tsx +206 -0
  59. package/src/components/index.web.ts +4 -0
  60. package/src/index.ts +8 -1
  61. package/src/index.web.ts +17 -0
package/README.md CHANGED
@@ -1,9 +1,6 @@
1
1
  # @lugg/maps
2
2
 
3
- React Native Fabric maps library for iOS and Android.
4
-
5
- - Google Maps (iOS & Android)
6
- - Apple Maps (iOS only)
3
+ Universal maps for your React Native apps 📍
7
4
 
8
5
  ## Installation
9
6
 
@@ -56,6 +53,22 @@ Add your Google Maps API key to `AndroidManifest.xml`:
56
53
  </application>
57
54
  ```
58
55
 
56
+ ### Web
57
+
58
+ Wrap your app with `MapProvider` and pass your Google Maps API key:
59
+
60
+ ```tsx
61
+ import { MapProvider } from '@lugg/maps';
62
+
63
+ function App() {
64
+ return (
65
+ <MapProvider apiKey="YOUR_WEB_API_KEY">
66
+ {/* Your app */}
67
+ </MapProvider>
68
+ );
69
+ }
70
+ ```
71
+
59
72
  ## Usage
60
73
 
61
74
  ```tsx
@@ -1,7 +1,6 @@
1
1
  package com.luggmaps
2
2
 
3
3
  import android.annotation.SuppressLint
4
- import android.util.Log
5
4
  import android.view.View
6
5
  import android.view.ViewGroup
7
6
  import com.facebook.react.uimanager.PixelUtil.dpToPx
@@ -103,7 +102,6 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
103
102
  override fun removeViewAt(index: Int) {
104
103
  val view = getChildAt(index)
105
104
  if (view is LuggMarkerView) {
106
- Log.d(TAG, "removing markerView: ${view.name}")
107
105
  view.marker?.remove()
108
106
  view.marker = null
109
107
  } else if (view is LuggPolylineView) {
@@ -123,7 +121,6 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
123
121
  }
124
122
 
125
123
  fun onDropViewInstance() {
126
- Log.d(TAG, "dropping mapView instance")
127
124
  pendingMarkerViews.clear()
128
125
  pendingPolylineViews.clear()
129
126
  polylineAnimators.values.forEach { it.destroy() }
@@ -282,6 +279,7 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
282
279
  title = markerView.title
283
280
  snippet = markerView.description
284
281
  setAnchor(markerView.anchorX, markerView.anchorY)
282
+ zIndex = markerView.zIndex
285
283
  if (!markerView.hasCustomView) {
286
284
  iconView = null
287
285
  }
@@ -291,7 +289,6 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
291
289
  private fun processPendingMarkers() {
292
290
  if (googleMap == null) return
293
291
 
294
- Log.d(TAG, "processing pending markers ${pendingMarkerViews.size}")
295
292
  pendingMarkerViews.forEach { addMarkerViewToMap(it) }
296
293
  pendingMarkerViews.clear()
297
294
  }
@@ -312,13 +309,13 @@ class LuggGoogleMapView(private val reactContext: ThemedReactContext) :
312
309
  .title(markerView.title)
313
310
  .snippet(markerView.description)
314
311
 
315
- Log.d(TAG, "adding marker: ${markerView.name} customview: ${markerView.hasCustomView}")
316
312
  if (markerView.hasCustomView) {
317
313
  options.iconView(iconView)
318
314
  }
319
315
 
320
316
  val marker = map.addMarker(options) as AdvancedMarker
321
317
  marker.setAnchor(markerView.anchorX, markerView.anchorY)
318
+ marker.zIndex = markerView.zIndex
322
319
 
323
320
  markerView.marker = marker
324
321
  }
@@ -1,7 +1,6 @@
1
1
  package com.luggmaps
2
2
 
3
3
  import android.content.Context
4
- import android.util.Log
5
4
  import android.view.View
6
5
  import androidx.core.view.isNotEmpty
7
6
  import com.facebook.react.views.view.ReactViewGroup
@@ -34,6 +33,9 @@ class LuggMarkerView(context: Context) : ReactViewGroup(context) {
34
33
  var anchorY: Float = 1.0f
35
34
  private set
36
35
 
36
+ var zIndex: Float = 0f
37
+ private set
38
+
37
39
  var didLayout: Boolean = false
38
40
  private set
39
41
 
@@ -114,6 +116,10 @@ class LuggMarkerView(context: Context) : ReactViewGroup(context) {
114
116
  anchorY = y.toFloat()
115
117
  }
116
118
 
119
+ fun setZIndex(zIndex: Float) {
120
+ this.zIndex = zIndex
121
+ }
122
+
117
123
  fun setName(name: String?) {
118
124
  this.name = name
119
125
  }
@@ -63,6 +63,12 @@ class LuggMarkerViewManager :
63
63
  }
64
64
  }
65
65
 
66
+ @ReactProp(name = "zIndex", defaultFloat = 0f)
67
+ override fun setZIndex(view: LuggMarkerView, zIndex: Float) {
68
+ super.setZIndex(view, zIndex)
69
+ view.setZIndex(zIndex)
70
+ }
71
+
66
72
  companion object {
67
73
  const val NAME = "LuggMarkerView"
68
74
  }
@@ -393,6 +393,12 @@ using namespace luggmaps::events;
393
393
  annotation.title = markerView.title;
394
394
  annotation.subtitle = markerView.markerDescription;
395
395
 
396
+ MKAnnotationView *annotationView = annotation.annotationView;
397
+ if (annotationView) {
398
+ annotationView.layer.zPosition = markerView.zIndex;
399
+ annotationView.zPriority = markerView.zIndex;
400
+ }
401
+
396
402
  [self updateAnnotationViewFrame:annotation];
397
403
  }
398
404
 
@@ -447,6 +453,8 @@ using namespace luggmaps::events;
447
453
  reuseIdentifier:nil];
448
454
  annotationView.canShowCallout = YES;
449
455
  annotationView.displayPriority = MKFeatureDisplayPriorityRequired;
456
+ annotationView.layer.zPosition = markerView.zIndex;
457
+ annotationView.zPriority = markerView.zIndex;
450
458
 
451
459
  UIView *iconView = markerView.iconView;
452
460
  [iconView removeFromSuperview];
@@ -242,6 +242,7 @@ static NSString *const kDemoMapId = @"DEMO_MAP_ID";
242
242
  marker.position = markerView.coordinate;
243
243
  marker.title = markerView.title;
244
244
  marker.snippet = markerView.markerDescription;
245
+ marker.zIndex = (int)markerView.zIndex;
245
246
  if (markerView.hasCustomView) {
246
247
  UIView *iconView = markerView.iconView;
247
248
  [iconView removeFromSuperview];
@@ -283,6 +284,7 @@ static NSString *const kDemoMapId = @"DEMO_MAP_ID";
283
284
  marker.groundAnchor = markerView.anchor;
284
285
  }
285
286
 
287
+ marker.zIndex = (int)markerView.zIndex;
286
288
  marker.map = _mapView;
287
289
 
288
290
  markerView.marker = marker;
@@ -14,10 +14,12 @@ NS_ASSUME_NONNULL_BEGIN
14
14
 
15
15
  @interface LuggMarkerView : RCTViewComponentView
16
16
 
17
+ @property(nonatomic, readonly, nullable) NSString *name;
17
18
  @property(nonatomic, readonly) CLLocationCoordinate2D coordinate;
18
19
  @property(nonatomic, readonly, nullable) NSString *title;
19
20
  @property(nonatomic, readonly, nullable) NSString *markerDescription;
20
21
  @property(nonatomic, readonly) CGPoint anchor;
22
+ @property(nonatomic, readonly) NSInteger zIndex;
21
23
  @property(nonatomic, readonly) BOOL hasCustomView;
22
24
  @property(nonatomic, readonly) BOOL didLayout;
23
25
  @property(nonatomic, readonly) UIView *iconView;
@@ -13,10 +13,12 @@ using namespace facebook::react;
13
13
  @end
14
14
 
15
15
  @implementation LuggMarkerView {
16
+ NSString *_name;
16
17
  CLLocationCoordinate2D _coordinate;
17
18
  NSString *_title;
18
19
  NSString *_markerDescription;
19
20
  CGPoint _anchor;
21
+ NSInteger _zIndex;
20
22
  BOOL _didLayout;
21
23
  UIView *_iconView;
22
24
  }
@@ -34,6 +36,7 @@ using namespace facebook::react;
34
36
 
35
37
  _coordinate = CLLocationCoordinate2DMake(0, 0);
36
38
  _anchor = CGPointMake(0.5, 1.0);
39
+ _zIndex = 0;
37
40
  _didLayout = NO;
38
41
 
39
42
  _iconView = [[UIView alloc] init];
@@ -52,12 +55,14 @@ using namespace facebook::react;
52
55
  const auto &newViewProps =
53
56
  *std::static_pointer_cast<LuggMarkerViewProps const>(props);
54
57
 
58
+ _name = [NSString stringWithUTF8String:newViewProps.name.c_str()];
55
59
  _coordinate = CLLocationCoordinate2DMake(newViewProps.coordinate.latitude,
56
60
  newViewProps.coordinate.longitude);
57
61
  _title = [NSString stringWithUTF8String:newViewProps.title.c_str()];
58
62
  _markerDescription =
59
63
  [NSString stringWithUTF8String:newViewProps.description.c_str()];
60
64
  _anchor = CGPointMake(newViewProps.anchor.x, newViewProps.anchor.y);
65
+ _zIndex = newViewProps.zIndex.value_or(0);
61
66
  }
62
67
 
63
68
  - (void)finalizeUpdates:(RNComponentViewUpdateMask)updateMask {
@@ -109,6 +114,10 @@ using namespace facebook::react;
109
114
  }
110
115
  }
111
116
 
117
+ - (NSString *)name {
118
+ return _name;
119
+ }
120
+
112
121
  - (CLLocationCoordinate2D)coordinate {
113
122
  return _coordinate;
114
123
  }
@@ -125,6 +134,10 @@ using namespace facebook::react;
125
134
  return _anchor;
126
135
  }
127
136
 
137
+ - (NSInteger)zIndex {
138
+ return _zIndex;
139
+ }
140
+
128
141
  - (BOOL)hasCustomView {
129
142
  return _iconView.subviews.count > 0;
130
143
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Provider component for map configuration.
5
+ * On web, wraps children with Google Maps APIProvider.
6
+ * On native, passes children through.
7
+ */
8
+ export function MapProvider({
9
+ children
10
+ }) {
11
+ return children;
12
+ }
13
+ //# sourceMappingURL=MapProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MapProvider","children"],"sourceRoot":"../../src","sources":["MapProvider.tsx"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,WAAWA,CAAC;EAAEC;AAA2B,CAAC,EAAE;EAC1D,OAAOA,QAAQ;AACjB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=MapProvider.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["MapProvider.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ import { APIProvider } from '@vis.gl/react-google-maps';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export function MapProvider({
6
+ apiKey = '',
7
+ children
8
+ }) {
9
+ return /*#__PURE__*/_jsx(APIProvider, {
10
+ apiKey: apiKey,
11
+ children: children
12
+ });
13
+ }
14
+ //# sourceMappingURL=MapProvider.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["APIProvider","jsx","_jsx","MapProvider","apiKey","children"],"sourceRoot":"../../src","sources":["MapProvider.web.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGxD,OAAO,SAASC,WAAWA,CAAC;EAAEC,MAAM,GAAG,EAAE;EAAEC;AAA2B,CAAC,EAAE;EACvE,oBAAOH,IAAA,CAACF,WAAW;IAACI,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAAEA;EAAQ,CAAc,CAAC;AAC9D","ignoreList":[]}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View } from 'react-native';
5
+ import { Map, useMap } from '@vis.gl/react-google-maps';
6
+ import { Marker } from "./components/Marker.web.js";
7
+ import { Polyline } from "./components/Polyline.web.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ // Map-specific component types that render inside the Google Map
10
+ const MAP_COMPONENT_TYPES = new Set([Marker, Polyline]);
11
+ const isMapComponent = child => MAP_COMPONENT_TYPES.has(child.type);
12
+ const createSyntheticEvent = nativeEvent => ({
13
+ nativeEvent,
14
+ currentTarget: null,
15
+ target: null,
16
+ bubbles: false,
17
+ cancelable: false,
18
+ defaultPrevented: false,
19
+ eventPhase: 0,
20
+ isTrusted: true,
21
+ preventDefault: () => {},
22
+ stopPropagation: () => {},
23
+ isDefaultPrevented: () => false,
24
+ isPropagationStopped: () => false,
25
+ persist: () => {},
26
+ timeStamp: Date.now(),
27
+ type: ''
28
+ });
29
+ function MapController({
30
+ onMapReady,
31
+ onCameraMove,
32
+ onCameraIdle,
33
+ onReady
34
+ }) {
35
+ const map = useMap();
36
+ const readyFired = React.useRef(false);
37
+ React.useEffect(() => {
38
+ if (!map) return;
39
+ onMapReady(map);
40
+ if (!readyFired.current) {
41
+ readyFired.current = true;
42
+ onReady?.();
43
+ }
44
+ }, [map, onMapReady, onReady]);
45
+ React.useEffect(() => {
46
+ if (!map) return;
47
+ const createPayload = gesture => {
48
+ const center = map.getCenter();
49
+ return {
50
+ coordinate: {
51
+ latitude: center?.lat() ?? 0,
52
+ longitude: center?.lng() ?? 0
53
+ },
54
+ zoom: map.getZoom() ?? 0,
55
+ gesture
56
+ };
57
+ };
58
+ let isDragging = false;
59
+ const dragStartListener = map.addListener('dragstart', () => {
60
+ isDragging = true;
61
+ });
62
+ const dragEndListener = map.addListener('dragend', () => {
63
+ isDragging = false;
64
+ });
65
+ const centerListener = map.addListener('center_changed', () => {
66
+ onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
67
+ });
68
+ const idleListener = map.addListener('idle', () => {
69
+ onCameraIdle?.(createSyntheticEvent(createPayload(false)));
70
+ });
71
+ return () => {
72
+ google.maps.event.removeListener(dragStartListener);
73
+ google.maps.event.removeListener(dragEndListener);
74
+ google.maps.event.removeListener(centerListener);
75
+ google.maps.event.removeListener(idleListener);
76
+ };
77
+ }, [map, onCameraMove, onCameraIdle]);
78
+ return null;
79
+ }
80
+ export class MapView extends React.Component {
81
+ static defaultProps = {
82
+ provider: 'google',
83
+ initialZoom: 10,
84
+ zoomEnabled: true,
85
+ scrollEnabled: true,
86
+ rotateEnabled: true,
87
+ pitchEnabled: true
88
+ };
89
+ mapInstance = null;
90
+ handleMapReady = map => {
91
+ this.mapInstance = map;
92
+ };
93
+ moveCamera(coordinate, options) {
94
+ const map = this.mapInstance;
95
+ if (!map) return;
96
+ const {
97
+ zoom,
98
+ duration = -1
99
+ } = options;
100
+ const center = {
101
+ lat: coordinate.latitude,
102
+ lng: coordinate.longitude
103
+ };
104
+ if (duration > 0) {
105
+ map.panTo(center);
106
+ map.setZoom(zoom);
107
+ } else {
108
+ map.setCenter(center);
109
+ map.setZoom(zoom);
110
+ }
111
+ }
112
+ fitCoordinates(coordinates, options) {
113
+ const map = this.mapInstance;
114
+ const first = coordinates[0];
115
+ if (!map || !first) return;
116
+ const {
117
+ padding,
118
+ duration = -1
119
+ } = options ?? {};
120
+ if (coordinates.length === 1) {
121
+ const zoom = this.props.initialZoom ?? 10;
122
+ this.moveCamera(first, {
123
+ zoom,
124
+ duration
125
+ });
126
+ return;
127
+ }
128
+ const bounds = new google.maps.LatLngBounds();
129
+ coordinates.forEach(coord => {
130
+ bounds.extend({
131
+ lat: coord.latitude,
132
+ lng: coord.longitude
133
+ });
134
+ });
135
+ map.fitBounds(bounds, {
136
+ top: padding?.top ?? 0,
137
+ left: padding?.left ?? 0,
138
+ bottom: padding?.bottom ?? 0,
139
+ right: padding?.right ?? 0
140
+ });
141
+ }
142
+ render() {
143
+ const {
144
+ mapId,
145
+ initialCoordinate,
146
+ initialZoom,
147
+ minZoom,
148
+ maxZoom,
149
+ zoomEnabled,
150
+ scrollEnabled,
151
+ pitchEnabled,
152
+ padding,
153
+ onCameraMove,
154
+ onCameraIdle,
155
+ onReady,
156
+ children,
157
+ style
158
+ } = this.props;
159
+ const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'none' : 'auto';
160
+ const defaultCenter = initialCoordinate ? {
161
+ lat: initialCoordinate.latitude,
162
+ lng: initialCoordinate.longitude
163
+ } : undefined;
164
+
165
+ // Separate map children (Marker, Polyline) from overlay children (regular Views)
166
+ const mapChildren = [];
167
+ const overlayChildren = [];
168
+ React.Children.forEach(children, child => {
169
+ if (! /*#__PURE__*/React.isValidElement(child)) return;
170
+ if (isMapComponent(child)) {
171
+ mapChildren.push(child);
172
+ } else {
173
+ overlayChildren.push(child);
174
+ }
175
+ });
176
+ const mapContainerStyle = {
177
+ position: 'absolute',
178
+ top: padding?.top ?? 0,
179
+ left: padding?.left ?? 0,
180
+ right: padding?.right ?? 0,
181
+ bottom: padding?.bottom ?? 0
182
+ };
183
+ const mapStyle = {
184
+ width: '100%',
185
+ height: '100%'
186
+ };
187
+ return /*#__PURE__*/_jsxs(View, {
188
+ style: style,
189
+ children: [/*#__PURE__*/_jsx(View, {
190
+ style: mapContainerStyle,
191
+ children: /*#__PURE__*/_jsxs(Map, {
192
+ mapId: mapId,
193
+ defaultCenter: defaultCenter,
194
+ defaultZoom: initialZoom,
195
+ minZoom: minZoom,
196
+ maxZoom: maxZoom,
197
+ gestureHandling: gestureHandling,
198
+ disableDefaultUI: true,
199
+ tilt: pitchEnabled === false ? 0 : undefined,
200
+ style: mapStyle,
201
+ children: [/*#__PURE__*/_jsx(MapController, {
202
+ onMapReady: this.handleMapReady,
203
+ onCameraMove: onCameraMove,
204
+ onCameraIdle: onCameraIdle,
205
+ onReady: onReady
206
+ }), mapChildren]
207
+ })
208
+ }), overlayChildren]
209
+ });
210
+ }
211
+ }
212
+ //# sourceMappingURL=MapView.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","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","MapController","onMapReady","onCameraMove","onCameraIdle","onReady","map","readyFired","useRef","useEffect","current","createPayload","gesture","center","getCenter","coordinate","latitude","lat","longitude","lng","zoom","getZoom","isDragging","dragStartListener","addListener","dragEndListener","centerListener","idleListener","google","maps","event","removeListener","MapView","Component","defaultProps","provider","initialZoom","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","mapInstance","handleMapReady","moveCamera","options","duration","panTo","setZoom","setCenter","fitCoordinates","coordinates","first","padding","length","props","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","render","mapId","initialCoordinate","minZoom","maxZoom","children","style","gestureHandling","defaultCenter","undefined","mapChildren","overlayChildren","Children","isValidElement","push","mapContainerStyle","position","mapStyle","width","height","defaultZoom","disableDefaultUI","tilt"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -12,10 +12,13 @@ export class Marker extends React.Component {
12
12
  title,
13
13
  description,
14
14
  anchor,
15
+ zIndex,
15
16
  children
16
17
  } = this.props;
17
18
  return /*#__PURE__*/_jsx(LuggMarkerViewNativeComponent, {
18
- style: styles.marker,
19
+ style: [{
20
+ zIndex
21
+ }, styles.marker],
19
22
  name: name,
20
23
  coordinate: coordinate,
21
24
  title: title,
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","LuggMarkerViewNativeComponent","jsx","_jsx","Marker","Component","render","name","coordinate","title","description","anchor","children","props","style","styles","marker","create","position","pointerEvents"],"sourceRoot":"../../../src","sources":["components/Marker.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,6BAA6B,MAAM,yCAAyC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA8BpF,OAAO,MAAMC,MAAM,SAASL,KAAK,CAACM,SAAS,CAAc;EACvDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,IAAI;MAAEC,UAAU;MAAEC,KAAK;MAAEC,WAAW;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAC9D,IAAI,CAACC,KAAK;IAEZ,oBACEV,IAAA,CAACF,6BAA6B;MAC5Ba,KAAK,EAAEC,MAAM,CAACC,MAAO;MACrBT,IAAI,EAAEA,IAAK;MACXC,UAAU,EAAEA,UAAW;MACvBC,KAAK,EAAEA,KAAM;MACbC,WAAW,EAAEA,WAAY;MACzBC,MAAM,EAAEA,MAAO;MAAAC,QAAA,EAEdA;IAAQ,CACoB,CAAC;EAEpC;AACF;AAEA,MAAMG,MAAM,GAAGf,UAAU,CAACiB,MAAM,CAAC;EAC/BD,MAAM,EAAE;IACNE,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","LuggMarkerViewNativeComponent","jsx","_jsx","Marker","Component","render","name","coordinate","title","description","anchor","zIndex","children","props","style","styles","marker","create","position","pointerEvents"],"sourceRoot":"../../../src","sources":["components/Marker.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,6BAA6B,MAAM,yCAAyC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAkCpF,OAAO,MAAMC,MAAM,SAASL,KAAK,CAACM,SAAS,CAAc;EACvDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,IAAI;MAAEC,UAAU;MAAEC,KAAK;MAAEC,WAAW;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAS,CAAC,GACtE,IAAI,CAACC,KAAK;IAEZ,oBACEX,IAAA,CAACF,6BAA6B;MAC5Bc,KAAK,EAAE,CAAC;QAAEH;MAAO,CAAC,EAAEI,MAAM,CAACC,MAAM,CAAE;MACnCV,IAAI,EAAEA,IAAK;MACXC,UAAU,EAAEA,UAAW;MACvBC,KAAK,EAAEA,KAAM;MACbC,WAAW,EAAEA,WAAY;MACzBC,MAAM,EAAEA,MAAO;MAAAE,QAAA,EAEdA;IAAQ,CACoB,CAAC;EAEpC;AACF;AAEA,MAAMG,MAAM,GAAGhB,UAAU,CAACkB,MAAM,CAAC;EAC/BD,MAAM,EAAE;IACNE,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { AdvancedMarker } from '@vis.gl/react-google-maps';
5
+ 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
+ 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 = {
21
+ lat: coordinate.latitude,
22
+ 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
+ }
33
+ }
34
+ //# sourceMappingURL=Marker.web.js.map
@@ -0,0 +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":[]}