@lugg/maps 1.0.0-beta.2 → 1.0.0-beta.4

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 (112) hide show
  1. package/README.md +3 -0
  2. package/android/src/main/java/com/luggmaps/LuggCircleView.kt +85 -0
  3. package/android/src/main/java/com/luggmaps/LuggCircleViewManager.kt +79 -0
  4. package/android/src/main/java/com/luggmaps/LuggGroundOverlayView.kt +81 -0
  5. package/android/src/main/java/com/luggmaps/LuggGroundOverlayViewManager.kt +82 -0
  6. package/android/src/main/java/com/luggmaps/LuggMapView.kt +9 -0
  7. package/android/src/main/java/com/luggmaps/LuggPackage.kt +4 -1
  8. package/android/src/main/java/com/luggmaps/LuggTileOverlayView.kt +92 -0
  9. package/android/src/main/java/com/luggmaps/LuggTileOverlayViewManager.kt +80 -0
  10. package/android/src/main/java/com/luggmaps/core/GoogleMapProvider.kt +290 -1
  11. package/android/src/main/java/com/luggmaps/core/MapProviderDelegate.kt +9 -0
  12. package/android/src/main/java/com/luggmaps/events/CirclePressEvent.kt +12 -0
  13. package/android/src/main/java/com/luggmaps/events/GroundOverlayPressEvent.kt +12 -0
  14. package/android/src/main/java/com/luggmaps/events/TileOverlayPressEvent.kt +12 -0
  15. package/ios/LuggCircleView.h +31 -0
  16. package/ios/LuggCircleView.mm +133 -0
  17. package/ios/LuggGroundOverlayView.h +30 -0
  18. package/ios/LuggGroundOverlayView.mm +125 -0
  19. package/ios/LuggMapView.mm +43 -0
  20. package/ios/LuggTileOverlayView.h +31 -0
  21. package/ios/LuggTileOverlayView.mm +130 -0
  22. package/ios/core/AppleMapProvider.mm +402 -7
  23. package/ios/core/GoogleMapProvider.mm +305 -11
  24. package/ios/core/MapProviderDelegate.h +12 -0
  25. package/ios/events/CirclePressEvent.h +20 -0
  26. package/ios/events/GroundOverlayPressEvent.h +20 -0
  27. package/ios/events/TileOverlayPressEvent.h +20 -0
  28. package/lib/module/components/Circle.js +46 -0
  29. package/lib/module/components/Circle.js.map +1 -0
  30. package/lib/module/components/Circle.types.js +4 -0
  31. package/lib/module/components/Circle.types.js.map +1 -0
  32. package/lib/module/components/Circle.web.js +79 -0
  33. package/lib/module/components/Circle.web.js.map +1 -0
  34. package/lib/module/components/GroundOverlay.js +45 -0
  35. package/lib/module/components/GroundOverlay.js.map +1 -0
  36. package/lib/module/components/GroundOverlay.types.js +4 -0
  37. package/lib/module/components/GroundOverlay.types.js.map +1 -0
  38. package/lib/module/components/GroundOverlay.web.js +77 -0
  39. package/lib/module/components/GroundOverlay.web.js.map +1 -0
  40. package/lib/module/components/Marker.js +5 -1
  41. package/lib/module/components/Marker.js.map +1 -1
  42. package/lib/module/components/TileOverlay.js +44 -0
  43. package/lib/module/components/TileOverlay.js.map +1 -0
  44. package/lib/module/components/TileOverlay.types.js +4 -0
  45. package/lib/module/components/TileOverlay.types.js.map +1 -0
  46. package/lib/module/components/TileOverlay.web.js +69 -0
  47. package/lib/module/components/TileOverlay.web.js.map +1 -0
  48. package/lib/module/components/index.js +3 -0
  49. package/lib/module/components/index.js.map +1 -1
  50. package/lib/module/components/index.web.js +3 -0
  51. package/lib/module/components/index.web.js.map +1 -1
  52. package/lib/module/fabric/LuggCircleViewNativeComponent.ts +25 -0
  53. package/lib/module/fabric/LuggGroundOverlayViewNativeComponent.ts +29 -0
  54. package/lib/module/fabric/LuggTileOverlayViewNativeComponent.ts +30 -0
  55. package/lib/module/index.js +3 -0
  56. package/lib/module/index.js.map +1 -1
  57. package/lib/module/index.web.js +3 -0
  58. package/lib/module/index.web.js.map +1 -1
  59. package/lib/typescript/src/components/Circle.d.ts +10 -0
  60. package/lib/typescript/src/components/Circle.d.ts.map +1 -0
  61. package/lib/typescript/src/components/Circle.types.d.ts +33 -0
  62. package/lib/typescript/src/components/Circle.types.d.ts.map +1 -0
  63. package/lib/typescript/src/components/Circle.web.d.ts +3 -0
  64. package/lib/typescript/src/components/Circle.web.d.ts.map +1 -0
  65. package/lib/typescript/src/components/GroundOverlay.d.ts +10 -0
  66. package/lib/typescript/src/components/GroundOverlay.d.ts.map +1 -0
  67. package/lib/typescript/src/components/GroundOverlay.types.d.ts +35 -0
  68. package/lib/typescript/src/components/GroundOverlay.types.d.ts.map +1 -0
  69. package/lib/typescript/src/components/GroundOverlay.web.d.ts +3 -0
  70. package/lib/typescript/src/components/GroundOverlay.web.d.ts.map +1 -0
  71. package/lib/typescript/src/components/Marker.d.ts.map +1 -1
  72. package/lib/typescript/src/components/Marker.types.d.ts +4 -1
  73. package/lib/typescript/src/components/Marker.types.d.ts.map +1 -1
  74. package/lib/typescript/src/components/TileOverlay.d.ts +10 -0
  75. package/lib/typescript/src/components/TileOverlay.d.ts.map +1 -0
  76. package/lib/typescript/src/components/TileOverlay.types.d.ts +36 -0
  77. package/lib/typescript/src/components/TileOverlay.types.d.ts.map +1 -0
  78. package/lib/typescript/src/components/TileOverlay.web.d.ts +3 -0
  79. package/lib/typescript/src/components/TileOverlay.web.d.ts.map +1 -0
  80. package/lib/typescript/src/components/index.d.ts +6 -0
  81. package/lib/typescript/src/components/index.d.ts.map +1 -1
  82. package/lib/typescript/src/components/index.web.d.ts +6 -0
  83. package/lib/typescript/src/components/index.web.d.ts.map +1 -1
  84. package/lib/typescript/src/fabric/LuggCircleViewNativeComponent.d.ts +18 -0
  85. package/lib/typescript/src/fabric/LuggCircleViewNativeComponent.d.ts.map +1 -0
  86. package/lib/typescript/src/fabric/LuggGroundOverlayViewNativeComponent.d.ts +21 -0
  87. package/lib/typescript/src/fabric/LuggGroundOverlayViewNativeComponent.d.ts.map +1 -0
  88. package/lib/typescript/src/fabric/LuggTileOverlayViewNativeComponent.d.ts +21 -0
  89. package/lib/typescript/src/fabric/LuggTileOverlayViewNativeComponent.d.ts.map +1 -0
  90. package/lib/typescript/src/index.d.ts +6 -0
  91. package/lib/typescript/src/index.d.ts.map +1 -1
  92. package/lib/typescript/src/index.web.d.ts +6 -0
  93. package/lib/typescript/src/index.web.d.ts.map +1 -1
  94. package/package.json +5 -2
  95. package/src/components/Circle.tsx +52 -0
  96. package/src/components/Circle.types.ts +33 -0
  97. package/src/components/Circle.web.tsx +93 -0
  98. package/src/components/GroundOverlay.tsx +47 -0
  99. package/src/components/GroundOverlay.types.ts +36 -0
  100. package/src/components/GroundOverlay.web.tsx +85 -0
  101. package/src/components/Marker.tsx +4 -1
  102. package/src/components/Marker.types.ts +4 -1
  103. package/src/components/TileOverlay.tsx +44 -0
  104. package/src/components/TileOverlay.types.ts +37 -0
  105. package/src/components/TileOverlay.web.tsx +95 -0
  106. package/src/components/index.ts +9 -0
  107. package/src/components/index.web.ts +9 -0
  108. package/src/fabric/LuggCircleViewNativeComponent.ts +25 -0
  109. package/src/fabric/LuggGroundOverlayViewNativeComponent.ts +29 -0
  110. package/src/fabric/LuggTileOverlayViewNativeComponent.ts +30 -0
  111. package/src/index.ts +6 -0
  112. package/src/index.web.ts +12 -0
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=GroundOverlay.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/GroundOverlay.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { useMapContext } from "../MapProvider.web.js";
5
+ export const GroundOverlay = ({
6
+ image,
7
+ bounds,
8
+ opacity = 1,
9
+ zIndex = 0,
10
+ onPress
11
+ }) => {
12
+ const {
13
+ map
14
+ } = useMapContext();
15
+ const overlayRef = useRef(null);
16
+ const listenersRef = useRef([]);
17
+ const handleClick = useCallback(() => {
18
+ onPress?.();
19
+ }, [onPress]);
20
+
21
+ // Cleanup on unmount
22
+ useEffect(() => {
23
+ return () => {
24
+ listenersRef.current.forEach(l => l.remove());
25
+ listenersRef.current = [];
26
+ overlayRef.current?.setMap(null);
27
+ overlayRef.current = null;
28
+ };
29
+ }, []);
30
+
31
+ // Sync listeners
32
+ useEffect(() => {
33
+ const overlay = overlayRef.current;
34
+ if (!overlay) return;
35
+ listenersRef.current.forEach(l => l.remove());
36
+ listenersRef.current = [];
37
+ if (onPress) {
38
+ listenersRef.current.push(overlay.addListener('click', handleClick));
39
+ }
40
+ overlay.set('clickable', !!onPress);
41
+ }, [onPress, handleClick]);
42
+
43
+ // Sync overlay with props
44
+ useEffect(() => {
45
+ if (!map) {
46
+ overlayRef.current?.setMap(null);
47
+ return;
48
+ }
49
+ const source = typeof image === 'number' ? null : Array.isArray(image) ? image[0] : image;
50
+ const imageUrl = source?.uri ?? '';
51
+ if (!imageUrl) return;
52
+ const latLngBounds = new google.maps.LatLngBounds({
53
+ lat: bounds.southwest.latitude,
54
+ lng: bounds.southwest.longitude
55
+ }, {
56
+ lat: bounds.northeast.latitude,
57
+ lng: bounds.northeast.longitude
58
+ });
59
+
60
+ // GroundOverlay bounds are immutable — recreate if bounds change
61
+ overlayRef.current?.setMap(null);
62
+ listenersRef.current.forEach(l => l.remove());
63
+ listenersRef.current = [];
64
+ const overlay = new google.maps.GroundOverlay(imageUrl, latLngBounds, {
65
+ opacity,
66
+ clickable: !!onPress,
67
+ map
68
+ });
69
+ overlay.set('zIndex', zIndex);
70
+ overlayRef.current = overlay;
71
+ if (onPress) {
72
+ listenersRef.current.push(overlay.addListener('click', handleClick));
73
+ }
74
+ }, [map, image, bounds, opacity, zIndex, onPress, handleClick]);
75
+ return null;
76
+ };
77
+ //# sourceMappingURL=GroundOverlay.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useMapContext","GroundOverlay","image","bounds","opacity","zIndex","onPress","map","overlayRef","listenersRef","handleClick","current","forEach","l","remove","setMap","overlay","push","addListener","set","source","Array","isArray","imageUrl","uri","latLngBounds","google","maps","LatLngBounds","lat","southwest","latitude","lng","longitude","northeast","clickable"],"sourceRoot":"../../../src","sources":["components/GroundOverlay.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,10 @@ import { StyleSheet } from 'react-native';
5
5
  import LuggMarkerViewNativeComponent from '../fabric/LuggMarkerViewNativeComponent';
6
6
  import LuggCalloutViewNativeComponent from '../fabric/LuggCalloutViewNativeComponent';
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const DEFAULT_ANCHOR = {
9
+ x: 0.5,
10
+ y: 1
11
+ };
8
12
  export class Marker extends React.PureComponent {
9
13
  getStyle(zIndex) {
10
14
  if (zIndex == null) return styles.marker;
@@ -45,7 +49,7 @@ export class Marker extends React.PureComponent {
45
49
  coordinate: coordinate,
46
50
  title: title,
47
51
  description: description,
48
- anchor: anchor,
52
+ anchor: anchor ?? DEFAULT_ANCHOR,
49
53
  rotate: rotate,
50
54
  scale: scale,
51
55
  rasterize: rasterize,
@@ -1 +1 @@
1
- {"version":3,"names":["React","isValidElement","StyleSheet","LuggMarkerViewNativeComponent","LuggCalloutViewNativeComponent","jsx","_jsx","jsxs","_jsxs","Marker","PureComponent","getStyle","zIndex","styles","marker","_cachedZIndex","_cachedStyle","render","name","coordinate","title","description","anchor","rotate","scale","rasterize","draggable","onPress","onDragStart","onDragChange","onDragEnd","callout","calloutOptions","children","props","calloutContent","createElement","calloutBubbled","bubbled","calloutAnchor","style","onMarkerPress","onMarkerDragStart","onMarkerDragChange","onMarkerDragEnd","calloutStyles","create","position","pointerEvents"],"sourceRoot":"../../../src","sources":["components/Marker.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,cAAc,QAAQ,OAAO;AAC7C,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,6BAA6B,MAAM,yCAAyC;AACnF,OAAOC,8BAA8B,MAAM,0CAA0C;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUtF,OAAO,MAAMC,MAAM,SAAST,KAAK,CAACU,aAAa,CAAc;EACnDC,QAAQA,CAACC,MAA0B,EAAE;IAC3C,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAOC,MAAM,CAACC,MAAM;IACxC,IAAIF,MAAM,KAAK,IAAI,CAACG,aAAa,EAAE;MACjC,IAAI,CAACA,aAAa,GAAGH,MAAM;MAC3B,IAAI,CAACI,YAAY,GAAG,CAAC;QAAEJ;MAAO,CAAC,EAAEC,MAAM,CAACC,MAAM,CAAC;IACjD;IACA,OAAO,IAAI,CAACE,YAAY;EAC1B;EAKAC,MAAMA,CAAA,EAAG;IACP,MAAM;MACJC,IAAI;MACJC,UAAU;MACVC,KAAK;MACLC,WAAW;MACXC,MAAM;MACNV,MAAM;MACNW,MAAM,GAAG,CAAC;MACVC,KAAK,GAAG,CAAC;MACTC,SAAS,GAAG,IAAI;MAChBC,SAAS,GAAG,KAAK;MACjBC,OAAO;MACPC,WAAW;MACXC,YAAY;MACZC,SAAS;MACTC,OAAO;MACPC,cAAc;MACdC;IACF,CAAC,GAAG,IAAI,CAACC,KAAK;IAEd,MAAMC,cAAc,GAAGJ,OAAO,GAC1B,aAAA9B,cAAc,CAAC8B,OAAO,CAAC,GACrBA,OAAO,gBACP/B,KAAK,CAACoC,aAAa,CAACL,OAAO,CAAC,GAC9B,IAAI;IACR,MAAMM,cAAc,GAAGL,cAAc,EAAEM,OAAO,IAAI,IAAI;IACtD,MAAMC,aAAa,GAAGP,cAAc,EAAEV,MAAM;IAE5C,oBACEd,KAAA,CAACL,6BAA6B;MAC5BqC,KAAK,EAAE,IAAI,CAAC7B,QAAQ,CAACC,MAAM,CAAE;MAC7BM,IAAI,EAAEA,IAAK;MACXC,UAAU,EAAEA,UAAW;MACvBC,KAAK,EAAEA,KAAM;MACbC,WAAW,EAAEA,WAAY;MACzBC,MAAM,EAAEA,MAAO;MACfC,MAAM,EAAEA,MAAO;MACfC,KAAK,EAAEA,KAAM;MACbC,SAAS,EAAEA,SAAU;MACrBC,SAAS,EAAEA,SAAU;MACrBe,aAAa,EAAEd,OAAQ;MACvBe,iBAAiB,EAAEd,WAAY;MAC/Be,kBAAkB,EAAEd,YAAa;MACjCe,eAAe,EAAEd,SAAU;MAAAG,QAAA,GAE1BA,QAAQ,EACRE,cAAc,iBACb7B,IAAA,CAACF,8BAA8B;QAC7BoC,KAAK,EAAEK,aAAa,CAACd,OAAQ;QAC7BO,OAAO,EAAED,cAAe;QACxBf,MAAM,EAAEiB,aAAc;QAAAN,QAAA,EAErBE;MAAc,CACe,CACjC;IAAA,CAC4B,CAAC;EAEpC;AACF;AAEA,MAAMtB,MAAM,GAAGX,UAAU,CAAC4C,MAAM,CAAC;EAC/BhC,MAAM,EAAE;IACNiC,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC;AAEF,MAAMH,aAAa,GAAG3C,UAAU,CAAC4C,MAAM,CAAC;EACtCf,OAAO,EAAE;IACPgB,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","isValidElement","StyleSheet","LuggMarkerViewNativeComponent","LuggCalloutViewNativeComponent","jsx","_jsx","jsxs","_jsxs","DEFAULT_ANCHOR","x","y","Marker","PureComponent","getStyle","zIndex","styles","marker","_cachedZIndex","_cachedStyle","render","name","coordinate","title","description","anchor","rotate","scale","rasterize","draggable","onPress","onDragStart","onDragChange","onDragEnd","callout","calloutOptions","children","props","calloutContent","createElement","calloutBubbled","bubbled","calloutAnchor","style","onMarkerPress","onMarkerDragStart","onMarkerDragChange","onMarkerDragEnd","calloutStyles","create","position","pointerEvents"],"sourceRoot":"../../../src","sources":["components/Marker.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,cAAc,QAAQ,OAAO;AAC7C,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,6BAA6B,MAAM,yCAAyC;AACnF,OAAOC,8BAA8B,MAAM,0CAA0C;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWtF,MAAMC,cAAqB,GAAG;EAAEC,CAAC,EAAE,GAAG;EAAEC,CAAC,EAAE;AAAE,CAAC;AAE9C,OAAO,MAAMC,MAAM,SAASZ,KAAK,CAACa,aAAa,CAAc;EACnDC,QAAQA,CAACC,MAA0B,EAAE;IAC3C,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAOC,MAAM,CAACC,MAAM;IACxC,IAAIF,MAAM,KAAK,IAAI,CAACG,aAAa,EAAE;MACjC,IAAI,CAACA,aAAa,GAAGH,MAAM;MAC3B,IAAI,CAACI,YAAY,GAAG,CAAC;QAAEJ;MAAO,CAAC,EAAEC,MAAM,CAACC,MAAM,CAAC;IACjD;IACA,OAAO,IAAI,CAACE,YAAY;EAC1B;EAKAC,MAAMA,CAAA,EAAG;IACP,MAAM;MACJC,IAAI;MACJC,UAAU;MACVC,KAAK;MACLC,WAAW;MACXC,MAAM;MACNV,MAAM;MACNW,MAAM,GAAG,CAAC;MACVC,KAAK,GAAG,CAAC;MACTC,SAAS,GAAG,IAAI;MAChBC,SAAS,GAAG,KAAK;MACjBC,OAAO;MACPC,WAAW;MACXC,YAAY;MACZC,SAAS;MACTC,OAAO;MACPC,cAAc;MACdC;IACF,CAAC,GAAG,IAAI,CAACC,KAAK;IAEd,MAAMC,cAAc,GAAGJ,OAAO,GAC1B,aAAAjC,cAAc,CAACiC,OAAO,CAAC,GACrBA,OAAO,gBACPlC,KAAK,CAACuC,aAAa,CAACL,OAAO,CAAC,GAC9B,IAAI;IACR,MAAMM,cAAc,GAAGL,cAAc,EAAEM,OAAO,IAAI,IAAI;IACtD,MAAMC,aAAa,GAAGP,cAAc,EAAEV,MAAM;IAE5C,oBACEjB,KAAA,CAACL,6BAA6B;MAC5BwC,KAAK,EAAE,IAAI,CAAC7B,QAAQ,CAACC,MAAM,CAAE;MAC7BM,IAAI,EAAEA,IAAK;MACXC,UAAU,EAAEA,UAAW;MACvBC,KAAK,EAAEA,KAAM;MACbC,WAAW,EAAEA,WAAY;MACzBC,MAAM,EAAEA,MAAM,IAAIhB,cAAe;MACjCiB,MAAM,EAAEA,MAAO;MACfC,KAAK,EAAEA,KAAM;MACbC,SAAS,EAAEA,SAAU;MACrBC,SAAS,EAAEA,SAAU;MACrBe,aAAa,EAAEd,OAAQ;MACvBe,iBAAiB,EAAEd,WAAY;MAC/Be,kBAAkB,EAAEd,YAAa;MACjCe,eAAe,EAAEd,SAAU;MAAAG,QAAA,GAE1BA,QAAQ,EACRE,cAAc,iBACbhC,IAAA,CAACF,8BAA8B;QAC7BuC,KAAK,EAAEK,aAAa,CAACd,OAAQ;QAC7BO,OAAO,EAAED,cAAe;QACxBf,MAAM,EAAEiB,aAAc;QAAAN,QAAA,EAErBE;MAAc,CACe,CACjC;IAAA,CAC4B,CAAC;EAEpC;AACF;AAEA,MAAMtB,MAAM,GAAGd,UAAU,CAAC+C,MAAM,CAAC;EAC/BhC,MAAM,EAAE;IACNiC,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC;AAEF,MAAMH,aAAa,GAAG9C,UAAU,CAAC+C,MAAM,CAAC;EACtCf,OAAO,EAAE;IACPgB,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import LuggTileOverlayViewNativeComponent from '../fabric/LuggTileOverlayViewNativeComponent';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export class TileOverlay extends React.PureComponent {
8
+ getStyle(zIndex) {
9
+ if (zIndex == null) return styles.overlay;
10
+ if (zIndex !== this._cachedZIndex) {
11
+ this._cachedZIndex = zIndex;
12
+ this._cachedStyle = [{
13
+ zIndex
14
+ }, styles.overlay];
15
+ }
16
+ return this._cachedStyle;
17
+ }
18
+ render() {
19
+ const {
20
+ urlTemplate,
21
+ tileSize,
22
+ opacity,
23
+ bounds,
24
+ zIndex,
25
+ onPress
26
+ } = this.props;
27
+ return /*#__PURE__*/_jsx(LuggTileOverlayViewNativeComponent, {
28
+ style: this.getStyle(zIndex),
29
+ urlTemplate: urlTemplate,
30
+ tileSize: tileSize,
31
+ opacity: opacity,
32
+ bounds: bounds,
33
+ tappable: !!onPress,
34
+ onTileOverlayPress: onPress
35
+ });
36
+ }
37
+ }
38
+ const styles = StyleSheet.create({
39
+ overlay: {
40
+ position: 'absolute',
41
+ pointerEvents: 'none'
42
+ }
43
+ });
44
+ //# sourceMappingURL=TileOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","LuggTileOverlayViewNativeComponent","jsx","_jsx","TileOverlay","PureComponent","getStyle","zIndex","styles","overlay","_cachedZIndex","_cachedStyle","render","urlTemplate","tileSize","opacity","bounds","onPress","props","style","tappable","onTileOverlayPress","create","position","pointerEvents"],"sourceRoot":"../../../src","sources":["components/TileOverlay.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,kCAAkC,MAAM,8CAA8C;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAK9F,OAAO,MAAMC,WAAW,SAASL,KAAK,CAACM,aAAa,CAAmB;EAI7DC,QAAQA,CAACC,MAA0B,EAAE;IAC3C,IAAIA,MAAM,IAAI,IAAI,EAAE,OAAOC,MAAM,CAACC,OAAO;IACzC,IAAIF,MAAM,KAAK,IAAI,CAACG,aAAa,EAAE;MACjC,IAAI,CAACA,aAAa,GAAGH,MAAM;MAC3B,IAAI,CAACI,YAAY,GAAG,CAAC;QAAEJ;MAAO,CAAC,EAAEC,MAAM,CAACC,OAAO,CAAC;IAClD;IACA,OAAO,IAAI,CAACE,YAAY;EAC1B;EAEAC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,WAAW;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,MAAM;MAAET,MAAM;MAAEU;IAAQ,CAAC,GAC/D,IAAI,CAACC,KAAK;IAEZ,oBACEf,IAAA,CAACF,kCAAkC;MACjCkB,KAAK,EAAE,IAAI,CAACb,QAAQ,CAACC,MAAM,CAAE;MAC7BM,WAAW,EAAEA,WAAY;MACzBC,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,MAAM,EAAEA,MAAO;MACfI,QAAQ,EAAE,CAAC,CAACH,OAAQ;MACpBI,kBAAkB,EAAEJ;IAAQ,CAC7B,CAAC;EAEN;AACF;AAEA,MAAMT,MAAM,GAAGR,UAAU,CAACsB,MAAM,CAAC;EAC/Bb,OAAO,EAAE;IACPc,QAAQ,EAAE,UAAU;IACpBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=TileOverlay.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/TileOverlay.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { useMapContext } from "../MapProvider.web.js";
5
+ export const TileOverlay = ({
6
+ urlTemplate,
7
+ tileSize = 256,
8
+ opacity = 1,
9
+ bounds,
10
+ zIndex = 0,
11
+ onPress
12
+ }) => {
13
+ const {
14
+ map
15
+ } = useMapContext();
16
+ const overlayRef = useRef(null);
17
+ const indexRef = useRef(-1);
18
+ const handleClick = useCallback(() => {
19
+ onPress?.();
20
+ }, [onPress]);
21
+
22
+ // Cleanup on unmount
23
+ useEffect(() => {
24
+ return () => {
25
+ if (overlayRef.current && indexRef.current >= 0) {
26
+ map?.overlayMapTypes.removeAt(indexRef.current);
27
+ }
28
+ overlayRef.current = null;
29
+ indexRef.current = -1;
30
+ };
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ }, []);
33
+
34
+ // Sync overlay with props
35
+ useEffect(() => {
36
+ if (!map) return;
37
+
38
+ // Remove old overlay
39
+ if (overlayRef.current && indexRef.current >= 0) {
40
+ map.overlayMapTypes.removeAt(indexRef.current);
41
+ overlayRef.current = null;
42
+ indexRef.current = -1;
43
+ }
44
+ if (!urlTemplate) return;
45
+ const imageMapType = new google.maps.ImageMapType({
46
+ getTileUrl: (coord, zoom) => {
47
+ if (bounds) {
48
+ const n = Math.pow(2, zoom);
49
+ const tileSWLat = Math.atan(Math.sinh(Math.PI * (1 - 2 * (coord.y + 1) / n))) * 180 / Math.PI;
50
+ const tileNELat = Math.atan(Math.sinh(Math.PI * (1 - 2 * coord.y / n))) * 180 / Math.PI;
51
+ const tileSWLng = coord.x / n * 360 - 180;
52
+ const tileNELng = (coord.x + 1) / n * 360 - 180;
53
+ if (tileNELat < bounds.southwest.latitude || tileSWLat > bounds.northeast.latitude || tileNELng < bounds.southwest.longitude || tileSWLng > bounds.northeast.longitude) {
54
+ return null;
55
+ }
56
+ }
57
+ return urlTemplate.replace('{x}', String(coord.x)).replace('{y}', String(coord.y)).replace('{z}', String(zoom));
58
+ },
59
+ tileSize: new google.maps.Size(tileSize, tileSize),
60
+ opacity
61
+ });
62
+ const length = map.overlayMapTypes.getLength();
63
+ map.overlayMapTypes.insertAt(length, imageMapType);
64
+ overlayRef.current = imageMapType;
65
+ indexRef.current = length;
66
+ }, [map, urlTemplate, tileSize, opacity, bounds, zIndex, onPress, handleClick]);
67
+ return null;
68
+ };
69
+ //# sourceMappingURL=TileOverlay.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useMapContext","TileOverlay","urlTemplate","tileSize","opacity","bounds","zIndex","onPress","map","overlayRef","indexRef","handleClick","current","overlayMapTypes","removeAt","imageMapType","google","maps","ImageMapType","getTileUrl","coord","zoom","n","Math","pow","tileSWLat","atan","sinh","PI","y","tileNELat","tileSWLng","x","tileNELng","southwest","latitude","northeast","longitude","replace","String","Size","length","getLength","insertAt"],"sourceRoot":"../../../src","sources":["components/TileOverlay.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,9 @@
2
2
 
3
3
  export { Marker } from './Marker';
4
4
  export { Polygon } from './Polygon';
5
+ export { Circle } from './Circle';
5
6
  export { Polyline } from './Polyline';
6
7
  export { GeoJson } from "./GeoJson.js";
8
+ export { GroundOverlay } from './GroundOverlay';
9
+ export { TileOverlay } from './TileOverlay';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Marker","Polygon","Polyline","GeoJson"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AAOjC,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,QAAQ,QAAQ,YAAY;AAMrC,SAASC,OAAO,QAAQ,cAAW","ignoreList":[]}
1
+ {"version":3,"names":["Marker","Polygon","Circle","Polyline","GeoJson","GroundOverlay","TileOverlay"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,UAAU;AAOjC,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,QAAQ,QAAQ,YAAY;AAMrC,SAASC,OAAO,QAAQ,cAAW;AAEnC,SAASC,aAAa,QAAQ,iBAAiB;AAK/C,SAASC,WAAW,QAAQ,eAAe","ignoreList":[]}
@@ -2,6 +2,9 @@
2
2
 
3
3
  export { Marker } from "./Marker.web.js";
4
4
  export { Polygon } from "./Polygon.web.js";
5
+ export { Circle } from "./Circle.web.js";
5
6
  export { Polyline } from "./Polyline.web.js";
6
7
  export { GeoJson } from "./GeoJson.js";
8
+ export { GroundOverlay } from "./GroundOverlay.web.js";
9
+ export { TileOverlay } from "./TileOverlay.web.js";
7
10
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Marker","Polygon","Polyline","GeoJson"],"sourceRoot":"../../../src","sources":["components/index.web.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAc;AACrC,SAASC,OAAO,QAAQ,kBAAe;AACvC,SAASC,QAAQ,QAAQ,mBAAgB;AAIzC,SAASC,OAAO,QAAQ,cAAW","ignoreList":[]}
1
+ {"version":3,"names":["Marker","Polygon","Circle","Polyline","GeoJson","GroundOverlay","TileOverlay"],"sourceRoot":"../../../src","sources":["components/index.web.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,iBAAc;AACrC,SAASC,OAAO,QAAQ,kBAAe;AACvC,SAASC,MAAM,QAAQ,iBAAc;AACrC,SAASC,QAAQ,QAAQ,mBAAgB;AAKzC,SAASC,OAAO,QAAQ,cAAW;AAEnC,SAASC,aAAa,QAAQ,wBAAqB;AAKnD,SAASC,WAAW,QAAQ,sBAAmB","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { codegenNativeComponent } from 'react-native';
2
+ import type { ViewProps, HostComponent, ColorValue } from 'react-native';
3
+ import type {
4
+ Double,
5
+ DirectEventHandler,
6
+ } from 'react-native/Libraries/Types/CodegenTypes';
7
+
8
+ export interface Coordinate {
9
+ latitude: Double;
10
+ longitude: Double;
11
+ }
12
+
13
+ export interface NativeProps extends ViewProps {
14
+ center: Coordinate;
15
+ radius?: Double;
16
+ strokeColor?: ColorValue;
17
+ strokeWidth?: Double;
18
+ fillColor?: ColorValue;
19
+ tappable?: boolean;
20
+ onCirclePress?: DirectEventHandler<null>;
21
+ }
22
+
23
+ export default codegenNativeComponent<NativeProps>(
24
+ 'LuggCircleView'
25
+ ) as HostComponent<NativeProps>;
@@ -0,0 +1,29 @@
1
+ import { codegenNativeComponent } from 'react-native';
2
+ import type { ViewProps, HostComponent } from 'react-native';
3
+ import type {
4
+ Double,
5
+ DirectEventHandler,
6
+ } from 'react-native/Libraries/Types/CodegenTypes';
7
+
8
+ export interface Coordinate {
9
+ latitude: Double;
10
+ longitude: Double;
11
+ }
12
+
13
+ export interface Bounds {
14
+ northeast: Coordinate;
15
+ southwest: Coordinate;
16
+ }
17
+
18
+ export interface NativeProps extends ViewProps {
19
+ image: string;
20
+ bounds: Bounds;
21
+ opacity?: Double;
22
+ bearing?: Double;
23
+ tappable?: boolean;
24
+ onGroundOverlayPress?: DirectEventHandler<null>;
25
+ }
26
+
27
+ export default codegenNativeComponent<NativeProps>(
28
+ 'LuggGroundOverlayView'
29
+ ) as HostComponent<NativeProps>;
@@ -0,0 +1,30 @@
1
+ import { codegenNativeComponent } from 'react-native';
2
+ import type { ViewProps, HostComponent } from 'react-native';
3
+ import type {
4
+ Double,
5
+ Int32,
6
+ DirectEventHandler,
7
+ } from 'react-native/Libraries/Types/CodegenTypes';
8
+
9
+ export interface Coordinate {
10
+ latitude: Double;
11
+ longitude: Double;
12
+ }
13
+
14
+ export interface Bounds {
15
+ northeast: Coordinate;
16
+ southwest: Coordinate;
17
+ }
18
+
19
+ export interface NativeProps extends ViewProps {
20
+ urlTemplate: string;
21
+ tileSize?: Int32;
22
+ opacity?: Double;
23
+ bounds?: Bounds;
24
+ tappable?: boolean;
25
+ onTileOverlayPress?: DirectEventHandler<null>;
26
+ }
27
+
28
+ export default codegenNativeComponent<NativeProps>(
29
+ 'LuggTileOverlayView'
30
+ ) as HostComponent<NativeProps>;
@@ -4,6 +4,9 @@ export { MapView } from './MapView';
4
4
  export { MapProvider } from './MapProvider';
5
5
  export { Marker } from './components';
6
6
  export { Polygon } from './components';
7
+ export { Circle } from './components';
7
8
  export { Polyline } from './components';
8
9
  export { GeoJson } from './components';
10
+ export { GroundOverlay } from './components';
11
+ export { TileOverlay } from './components';
9
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MapView","MapProvider","Marker","Polygon","Polyline","GeoJson"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,cAAc;AAOrC,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,QAAQ,QAAQ,cAAc;AAMvC,SAASC,OAAO,QAAQ,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["MapView","MapProvider","Marker","Polygon","Circle","Polyline","GeoJson","GroundOverlay","TileOverlay"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,cAAc;AAOrC,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,MAAM,QAAQ,cAAc;AAErC,SAASC,QAAQ,QAAQ,cAAc;AAMvC,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,aAAa,QAAQ,cAAc;AAE5C,SAASC,WAAW,QAAQ,cAAc","ignoreList":[]}
@@ -4,6 +4,9 @@ export { MapView } from "./MapView.web.js";
4
4
  export { MapProvider } from "./MapProvider.web.js";
5
5
  export { Marker } from "./components/index.web.js";
6
6
  export { Polygon } from "./components/index.web.js";
7
+ export { Circle } from "./components/index.web.js";
7
8
  export { Polyline } from "./components/index.web.js";
8
9
  export { GeoJson } from "./components/index.web.js";
10
+ export { GroundOverlay } from "./components/index.web.js";
11
+ export { TileOverlay } from "./components/index.web.js";
9
12
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MapView","MapProvider","Marker","Polygon","Polyline","GeoJson"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,kBAAe;AACvC,SAASC,WAAW,QAAQ,sBAAmB;AAE/C,SAASC,MAAM,QAAQ,2BAAwB;AAE/C,SAASC,OAAO,QAAQ,2BAAwB;AAEhD,SAASC,QAAQ,QAAQ,2BAAwB;AAEjD,SAASC,OAAO,QAAQ,2BAAwB","ignoreList":[]}
1
+ {"version":3,"names":["MapView","MapProvider","Marker","Polygon","Circle","Polyline","GeoJson","GroundOverlay","TileOverlay"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,kBAAe;AACvC,SAASC,WAAW,QAAQ,sBAAmB;AAE/C,SAASC,MAAM,QAAQ,2BAAwB;AAE/C,SAASC,OAAO,QAAQ,2BAAwB;AAEhD,SAASC,MAAM,QAAQ,2BAAwB;AAE/C,SAASC,QAAQ,QAAQ,2BAAwB;AAEjD,SAASC,OAAO,QAAQ,2BAAwB;AAEhD,SAASC,aAAa,QAAQ,2BAAwB;AAKtD,SAASC,WAAW,QAAQ,2BAAwB","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { CircleProps } from './Circle.types';
3
+ export type { CircleProps } from './Circle.types';
4
+ export declare class Circle extends React.PureComponent<CircleProps> {
5
+ private _cachedZIndex;
6
+ private _cachedStyle;
7
+ private getStyle;
8
+ render(): import("react/jsx-runtime").JSX.Element;
9
+ }
10
+ //# sourceMappingURL=Circle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../../src/components/Circle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,qBAAa,MAAO,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;IAC1D,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ;IAShB,MAAM;CAwBP"}
@@ -0,0 +1,33 @@
1
+ import type { ColorValue } from 'react-native';
2
+ import type { Coordinate } from '../types';
3
+ export interface CircleProps {
4
+ /**
5
+ * Center coordinate of the circle
6
+ */
7
+ center: Coordinate;
8
+ /**
9
+ * Radius in meters
10
+ */
11
+ radius: number;
12
+ /**
13
+ * Stroke (outline) color
14
+ */
15
+ strokeColor?: ColorValue;
16
+ /**
17
+ * Stroke width in points
18
+ */
19
+ strokeWidth?: number;
20
+ /**
21
+ * Fill color of the circle
22
+ */
23
+ fillColor?: ColorValue;
24
+ /**
25
+ * Z-index for layering
26
+ */
27
+ zIndex?: number;
28
+ /**
29
+ * Called when the circle is tapped
30
+ */
31
+ onPress?: () => void;
32
+ }
33
+ //# sourceMappingURL=Circle.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Circle.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Circle.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ import type { CircleProps } from './Circle.types';
2
+ export declare const Circle: ({ center, radius, strokeColor, strokeWidth, fillColor, zIndex, onPress, }: CircleProps) => null;
3
+ //# sourceMappingURL=Circle.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Circle.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Circle.web.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,MAAM,GAAI,2EAQpB,WAAW,SAgFb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { GroundOverlayProps } from './GroundOverlay.types';
3
+ export type { GroundOverlayProps, GroundOverlayBounds, } from './GroundOverlay.types';
4
+ export declare class GroundOverlay extends React.PureComponent<GroundOverlayProps> {
5
+ private _cachedZIndex;
6
+ private _cachedStyle;
7
+ private getStyle;
8
+ render(): import("react/jsx-runtime").JSX.Element;
9
+ }
10
+ //# sourceMappingURL=GroundOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundOverlay.d.ts","sourceRoot":"","sources":["../../../../src/components/GroundOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,aAAc,SAAQ,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC;IACxE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ;IAShB,MAAM;CAgBP"}
@@ -0,0 +1,35 @@
1
+ import type { ImageSourcePropType } from 'react-native';
2
+ import type { Coordinate } from '../types';
3
+ export interface GroundOverlayBounds {
4
+ northeast: Coordinate;
5
+ southwest: Coordinate;
6
+ }
7
+ export interface GroundOverlayProps {
8
+ /**
9
+ * Image to overlay on the map
10
+ */
11
+ image: ImageSourcePropType;
12
+ /**
13
+ * Geographic bounds for the overlay
14
+ */
15
+ bounds: GroundOverlayBounds;
16
+ /**
17
+ * Opacity of the overlay (0-1)
18
+ */
19
+ opacity?: number;
20
+ /**
21
+ * Bearing (rotation) in degrees clockwise from north.
22
+ * Only supported on Google Maps.
23
+ * @platform google
24
+ */
25
+ bearing?: number;
26
+ /**
27
+ * Z-index for layering
28
+ */
29
+ zIndex?: number;
30
+ /**
31
+ * Called when the overlay is tapped
32
+ */
33
+ onPress?: () => void;
34
+ }
35
+ //# sourceMappingURL=GroundOverlay.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundOverlay.types.d.ts","sourceRoot":"","sources":["../../../../src/components/GroundOverlay.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAC;IAC3B;;OAEG;IACH,MAAM,EAAE,mBAAmB,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ import type { GroundOverlayProps } from './GroundOverlay.types';
2
+ export declare const GroundOverlay: ({ image, bounds, opacity, zIndex, onPress, }: GroundOverlayProps) => null;
3
+ //# sourceMappingURL=GroundOverlay.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroundOverlay.web.d.ts","sourceRoot":"","sources":["../../../../src/components/GroundOverlay.web.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,eAAO,MAAM,aAAa,GAAI,8CAM3B,kBAAkB,SA0EpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,MAAO,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;IAC1D,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAM;IAE1B,MAAM;CA2DP"}
1
+ {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,YAAY,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAIxB,qBAAa,MAAO,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;IAC1D,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAM;IAE1B,MAAM;CA2DP"}
@@ -38,7 +38,10 @@ export interface MarkerProps {
38
38
  */
39
39
  description?: string;
40
40
  /**
41
- * Anchor point for custom marker views
41
+ * Anchor point for custom marker views.
42
+ * `{x: 0.5, y: 1}` places the bottom-center of the marker at the coordinate.
43
+ *
44
+ * @default {x: 0.5, y: 1}
42
45
  */
43
46
  anchor?: Point;
44
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;IAChD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
1
+ {"version":3,"file":"Marker.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;IAChD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { TileOverlayProps } from './TileOverlay.types';
3
+ export type { TileOverlayProps } from './TileOverlay.types';
4
+ export declare class TileOverlay extends React.PureComponent<TileOverlayProps> {
5
+ private _cachedZIndex;
6
+ private _cachedStyle;
7
+ private getStyle;
8
+ render(): import("react/jsx-runtime").JSX.Element;
9
+ }
10
+ //# sourceMappingURL=TileOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileOverlay.d.ts","sourceRoot":"","sources":["../../../../src/components/TileOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,WAAY,SAAQ,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;IACpE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ;IAShB,MAAM;CAgBP"}
@@ -0,0 +1,36 @@
1
+ import type { Coordinate } from '../types';
2
+ export interface TileOverlayBounds {
3
+ northeast: Coordinate;
4
+ southwest: Coordinate;
5
+ }
6
+ export interface TileOverlayProps {
7
+ /**
8
+ * URL template for tile images.
9
+ * Use `{x}`, `{y}`, `{z}` placeholders for tile coordinates and zoom level.
10
+ * @example "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
11
+ */
12
+ urlTemplate: string;
13
+ /**
14
+ * Size of each tile in pixels
15
+ * @default 256
16
+ */
17
+ tileSize?: number;
18
+ /**
19
+ * Opacity of the tile overlay (0-1)
20
+ */
21
+ opacity?: number;
22
+ /**
23
+ * Restrict tiles to a geographic region.
24
+ * Tiles outside these bounds will not be loaded.
25
+ */
26
+ bounds?: TileOverlayBounds;
27
+ /**
28
+ * Z-index for layering
29
+ */
30
+ zIndex?: number;
31
+ /**
32
+ * Called when the tile overlay is tapped
33
+ */
34
+ onPress?: () => void;
35
+ }
36
+ //# sourceMappingURL=TileOverlay.types.d.ts.map