react-native-maps 1.21.0-alpha.14 → 1.21.0-alpha.140

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 (256) hide show
  1. package/android/build.gradle +73 -53
  2. package/android/gradlew +1 -2
  3. package/android/src/main/RCTAppDependencyProvider.h +25 -0
  4. package/android/src/main/RCTAppDependencyProvider.mm +55 -0
  5. package/android/src/main/RCTModulesConformingToProtocolsProvider.h +18 -0
  6. package/android/src/main/RCTModulesConformingToProtocolsProvider.mm +33 -0
  7. package/android/src/main/RCTThirdPartyComponentsProvider.h +16 -0
  8. package/android/src/main/RCTThirdPartyComponentsProvider.mm +28 -0
  9. package/android/src/main/ReactAppDependencyProvider.podspec +34 -0
  10. package/android/src/main/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  11. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
  12. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
  13. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
  14. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
  15. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
  16. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
  17. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +209 -0
  18. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +74 -0
  19. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
  20. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  21. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +46 -0
  22. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +23 -0
  23. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
  24. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
  25. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerDelegate.java +62 -0
  26. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerInterface.java +27 -0
  27. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerDelegate.java +56 -0
  28. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerInterface.java +25 -0
  29. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  30. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  31. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  32. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +624 -0
  33. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  34. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  35. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  36. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  37. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  38. package/android/src/main/java/com/rnmaps/fabric/UrlTileManager.java +124 -0
  39. package/android/src/main/java/com/rnmaps/fabric/WMSTileManager.java +114 -0
  40. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  41. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  42. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  43. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  45. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  46. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  47. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  48. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  60. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  61. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  62. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  63. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  64. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  65. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  66. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +55 -3
  67. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  68. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  69. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  70. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  71. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  72. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  73. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  74. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  75. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  76. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  77. package/android/src/main/java/com/rnmaps/maps/MapUrlTile.java +18 -18
  78. package/android/src/main/java/com/rnmaps/maps/MapUrlTileManager.java +10 -14
  79. package/android/src/main/java/com/rnmaps/maps/MapView.java +1649 -1336
  80. package/android/src/main/java/com/rnmaps/maps/MapWMSTile.java +3 -3
  81. package/android/src/main/java/com/rnmaps/maps/MapWMSTileManager.java +10 -10
  82. package/android/src/main/jni/CMakeLists.txt +36 -0
  83. package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
  84. package/android/src/main/jni/RNMapsSpecs.h +31 -0
  85. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +31 -0
  86. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +33 -0
  87. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +979 -0
  88. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +860 -0
  89. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +227 -0
  90. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1263 -0
  91. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  92. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  93. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +26 -0
  94. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +131 -0
  95. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  96. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +137 -0
  97. package/ios/AirGoogleMaps/AIRGoogleMap.h +10 -11
  98. package/ios/AirGoogleMaps/AIRGoogleMap.m +104 -71
  99. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  100. package/ios/AirGoogleMaps/AIRGoogleMapManager.h +1 -0
  101. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +254 -250
  102. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +6 -3
  103. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  104. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +3 -0
  105. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  106. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  107. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  108. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  109. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  110. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +1 -1
  111. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +123 -43
  112. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  113. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  114. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  115. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  116. package/ios/AirMaps/AIRMap.h +8 -9
  117. package/ios/AirMaps/AIRMap.m +222 -239
  118. package/ios/AirMaps/AIRMapManager.m +10 -7
  119. package/ios/AirMaps/AIRMapMarker.h +1 -0
  120. package/ios/AirMaps/AIRMapMarker.m +142 -67
  121. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  122. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
  123. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
  124. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  125. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
  126. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  127. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  128. package/ios/AirMaps/RNMapsDefines.h +1 -0
  129. package/ios/AirMaps/RNMapsMapView.h +1 -1
  130. package/ios/AirMaps/RNMapsMapView.mm +119 -95
  131. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  132. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  133. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  134. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  135. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  136. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  137. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  138. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  139. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  140. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  141. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  142. package/ios/{AirMaps → generated}/RNMapsAirModuleDelegate.h +2 -2
  143. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  144. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
  145. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
  146. package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
  147. package/ios/generated/RNMapsSpecs/Props.cpp +194 -0
  148. package/ios/generated/RNMapsSpecs/Props.h +1224 -0
  149. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
  150. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  151. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
  152. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
  153. package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
  154. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  155. package/ios/generated/RNMapsSpecs/States.h +113 -0
  156. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  157. package/ios/generated/RNMapsSpecsJSI.h +268 -0
  158. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  159. package/package.json +26 -19
  160. package/react-native-google-maps.podspec +26 -0
  161. package/react-native-maps-generated.podspec +31 -0
  162. package/react-native-maps.podspec +55 -15
  163. package/react-native.config.js +16 -0
  164. package/src/AnimatedRegion.ts +169 -0
  165. package/src/Geojson.tsx +541 -0
  166. package/src/MapCallout.tsx +77 -0
  167. package/src/MapCalloutSubview.tsx +64 -0
  168. package/src/MapCircle.tsx +162 -0
  169. package/src/MapHeatmap.tsx +125 -0
  170. package/src/MapLocalTile.tsx +60 -0
  171. package/src/MapMarker.tsx +531 -0
  172. package/src/MapMarkerNativeComponent.ts +51 -0
  173. package/src/MapOverlay.tsx +156 -0
  174. package/src/MapPolygon.tsx +188 -0
  175. package/src/MapPolygon.types.ts +25 -0
  176. package/src/MapPolyline.tsx +215 -0
  177. package/src/MapUrlTile.tsx +169 -0
  178. package/src/MapView.tsx +1230 -0
  179. package/src/MapView.types.ts +212 -0
  180. package/src/MapView.web.ts +2 -0
  181. package/src/MapViewNativeComponent.ts +86 -0
  182. package/src/MapWMSTile.tsx +148 -0
  183. package/src/ProviderConstants.ts +2 -0
  184. package/src/createFabricMap.tsx +253 -0
  185. package/src/decorateMapComponent.ts +227 -0
  186. package/src/fixImageProp.ts +17 -0
  187. package/src/index.ts +52 -0
  188. package/src/sharedTypes.ts +101 -0
  189. package/src/specs/NativeAirMapsModule.ts +36 -0
  190. package/src/specs/NativeComponentCallout.ts +63 -0
  191. package/src/specs/NativeComponentCircle.ts +93 -0
  192. package/src/specs/NativeComponentGoogleMapView.ts +922 -0
  193. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  194. package/src/specs/NativeComponentMapView.ts +1100 -0
  195. package/src/specs/NativeComponentMarker.ts +326 -0
  196. package/src/specs/NativeComponentOverlay.ts +89 -0
  197. package/src/specs/NativeComponentPolyline.ts +124 -0
  198. package/src/specs/NativeComponentUrlTile.ts +128 -0
  199. package/src/specs/NativeComponentWMSTile.ts +107 -0
  200. package/lib/AnimatedRegion.d.ts +0 -19
  201. package/lib/AnimatedRegion.js +0 -134
  202. package/lib/Geojson.d.ts +0 -204
  203. package/lib/Geojson.js +0 -166
  204. package/lib/MapCallout.d.ts +0 -40
  205. package/lib/MapCallout.js +0 -51
  206. package/lib/MapCalloutSubview.d.ts +0 -34
  207. package/lib/MapCalloutSubview.js +0 -48
  208. package/lib/MapCircle.d.ts +0 -117
  209. package/lib/MapCircle.js +0 -53
  210. package/lib/MapHeatmap.d.ts +0 -78
  211. package/lib/MapHeatmap.js +0 -59
  212. package/lib/MapLocalTile.d.ts +0 -35
  213. package/lib/MapLocalTile.js +0 -44
  214. package/lib/MapMarker.d.ts +0 -309
  215. package/lib/MapMarker.js +0 -116
  216. package/lib/MapMarkerNativeComponent.d.ts +0 -15
  217. package/lib/MapMarkerNativeComponent.js +0 -17
  218. package/lib/MapOverlay.d.ts +0 -87
  219. package/lib/MapOverlay.js +0 -63
  220. package/lib/MapPolygon.d.ts +0 -140
  221. package/lib/MapPolygon.js +0 -53
  222. package/lib/MapPolygon.types.d.ts +0 -18
  223. package/lib/MapPolygon.types.js +0 -2
  224. package/lib/MapPolyline.d.ts +0 -156
  225. package/lib/MapPolyline.js +0 -53
  226. package/lib/MapUrlTile.d.ts +0 -134
  227. package/lib/MapUrlTile.js +0 -44
  228. package/lib/MapView.d.ts +0 -715
  229. package/lib/MapView.js +0 -447
  230. package/lib/MapView.types.d.ts +0 -161
  231. package/lib/MapView.types.js +0 -2
  232. package/lib/MapView.web.d.ts +0 -1
  233. package/lib/MapView.web.js +0 -9
  234. package/lib/MapViewNativeComponent.d.ts +0 -18
  235. package/lib/MapViewNativeComponent.js +0 -19
  236. package/lib/MapWMSTile.d.ts +0 -116
  237. package/lib/MapWMSTile.js +0 -44
  238. package/lib/ProviderConstants.d.ts +0 -2
  239. package/lib/ProviderConstants.js +0 -5
  240. package/lib/createFabricMap.d.ts +0 -23
  241. package/lib/createFabricMap.js +0 -175
  242. package/lib/decorateMapComponent.d.ts +0 -36
  243. package/lib/decorateMapComponent.js +0 -80
  244. package/lib/index.d.ts +0 -38
  245. package/lib/index.js +0 -81
  246. package/lib/sharedTypes.d.ts +0 -81
  247. package/lib/sharedTypes.js +0 -2
  248. package/lib/sharedTypesInternal.js +0 -2
  249. package/lib/specs/NativeAirMapsModule.d.ts +0 -31
  250. package/lib/specs/NativeAirMapsModule.js +0 -4
  251. package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
  252. package/lib/specs/NativeComponentGoogleMapView.js +0 -21
  253. package/lib/specs/NativeComponentMapView.d.ts +0 -855
  254. package/lib/specs/NativeComponentMapView.js +0 -21
  255. /package/ios/{AirMaps → generated}/RNMapsHostVewDelegate.h +0 -0
  256. /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
@@ -0,0 +1,227 @@
1
+ import {createContext} from 'react';
2
+ import {
3
+ requireNativeComponent,
4
+ NativeModules,
5
+ Platform,
6
+ UIManager,
7
+ HostComponent,
8
+ } from 'react-native';
9
+ import {PROVIDER_DEFAULT, PROVIDER_GOOGLE} from './ProviderConstants';
10
+ import {Provider} from './sharedTypes';
11
+ import {MapCallout} from './MapCallout';
12
+ import {MapOverlay} from './MapOverlay';
13
+ import {MapCalloutSubview} from './MapCalloutSubview';
14
+ import {MapCircle} from './MapCircle';
15
+ import {MapHeatmap} from './MapHeatmap';
16
+ import {MapLocalTile} from './MapLocalTile';
17
+ import {MapMarker} from './MapMarker';
18
+ import {MapPolygon} from './MapPolygon';
19
+ import {MapPolyline} from './MapPolyline';
20
+ import {MapUrlTile} from './MapUrlTile';
21
+ import {MapWMSTile} from './MapWMSTile';
22
+ import {Commands} from './MapViewNativeComponent';
23
+ import GooglePolygon from './specs/NativeComponentGooglePolygon';
24
+ import FabricMarker from './specs/NativeComponentMarker';
25
+ import FabricUrlTile from './specs/NativeComponentUrlTile';
26
+ import FabricWMSTile from './specs/NativeComponentWMSTile.ts';
27
+ import FabricCallout from './specs/NativeComponentCallout';
28
+ import FabricPolyline from './specs/NativeComponentPolyline';
29
+ import FabricCircle from './specs/NativeComponentCircle';
30
+ import FabricOverlay from './specs/NativeComponentOverlay';
31
+
32
+ export const SUPPORTED: ImplementationStatus = 'SUPPORTED';
33
+ export const USES_DEFAULT_IMPLEMENTATION: ImplementationStatus =
34
+ 'USES_DEFAULT_IMPLEMENTATION';
35
+ export const NOT_SUPPORTED: ImplementationStatus = 'NOT_SUPPORTED';
36
+
37
+ export const ProviderContext = createContext<Provider>(undefined);
38
+
39
+ export function getNativeMapName(provider: Provider) {
40
+ if (Platform.OS === 'android') {
41
+ return 'AIRMap';
42
+ }
43
+ if (provider === PROVIDER_GOOGLE) {
44
+ return 'AIRGoogleMap';
45
+ }
46
+ return 'AIRMap';
47
+ }
48
+
49
+ function getNativeComponentName(provider: Provider, component: ComponentName) {
50
+ return `${getNativeMapName(provider)}${component}`;
51
+ }
52
+
53
+ export const createNotSupportedComponent = (message: string) => () => {
54
+ console.error(message);
55
+ return null;
56
+ };
57
+
58
+ export const googleMapIsInstalled = !!UIManager.hasViewManagerConfig(
59
+ getNativeMapName(PROVIDER_GOOGLE),
60
+ );
61
+
62
+ export default function decorateMapComponent<Type extends Component>(
63
+ Component: Type,
64
+ componentName: ComponentName,
65
+ providers: Providers,
66
+ ): Type {
67
+ const components: {
68
+ [key: string]: NativeComponent;
69
+ } = {};
70
+
71
+ const getDefaultComponent = () =>
72
+ requireNativeComponent(getNativeComponentName(undefined, componentName));
73
+
74
+ Component.contextType = ProviderContext;
75
+
76
+ Component.prototype.getNativeComponent =
77
+ function getNativeComponent(): NativeComponent {
78
+ const provider = this.context;
79
+ if (
80
+ componentName === 'Marker' &&
81
+ (Platform.OS !== 'ios' || provider !== PROVIDER_GOOGLE)
82
+ ) {
83
+ // @ts-ignore
84
+ return FabricMarker;
85
+ }
86
+ if (
87
+ componentName === 'Polygon' &&
88
+ ((provider === PROVIDER_GOOGLE &&
89
+ Platform.OS === 'ios' &&
90
+ googleMapIsInstalled) ||
91
+ Platform.OS === 'android')
92
+ ) {
93
+ // @ts-ignore
94
+ return GooglePolygon;
95
+ }
96
+ if (Platform.OS === 'android') {
97
+ if (componentName === 'Callout') {
98
+ // @ts-ignore
99
+ return FabricCallout;
100
+ } else if (componentName === 'Polyline') {
101
+ // @ts-ignore
102
+ return FabricPolyline;
103
+ } else if (componentName === 'Circle') {
104
+ // @ts-ignore
105
+ return FabricCircle;
106
+ } else if (componentName === 'Overlay') {
107
+ // @ts-ignore
108
+ return FabricOverlay;
109
+ } else if (componentName === 'UrlTile') {
110
+ // @ts-ignore
111
+ return FabricUrlTile;
112
+ } else if (componentName === 'WMSTile') {
113
+ // @ts-ignore
114
+ return FabricWMSTile;
115
+ }
116
+ }
117
+ const key = provider || 'default';
118
+ if (components[key]) {
119
+ return components[key];
120
+ }
121
+
122
+ if (provider === PROVIDER_DEFAULT) {
123
+ components[key] = getDefaultComponent();
124
+ return components[key];
125
+ }
126
+
127
+ const providerInfo = providers[provider];
128
+ // quick fix. Previous code assumed android | ios
129
+ if (Platform.OS !== 'android' && Platform.OS !== 'ios') {
130
+ throw new Error(`react-native-maps doesn't support ${Platform.OS}`);
131
+ }
132
+
133
+ const platformSupport = providerInfo[Platform.OS];
134
+ const nativeComponentName = getNativeComponentName(
135
+ provider,
136
+ componentName,
137
+ );
138
+ if (platformSupport === NOT_SUPPORTED) {
139
+ components[key] = createNotSupportedComponent(
140
+ `react-native-maps: ${nativeComponentName} is not supported on ${Platform.OS}`,
141
+ );
142
+ } else if (platformSupport === SUPPORTED) {
143
+ if (
144
+ provider !== PROVIDER_GOOGLE ||
145
+ (Platform.OS === 'ios' && googleMapIsInstalled)
146
+ ) {
147
+ components[key] = requireNativeComponent(nativeComponentName);
148
+ }
149
+ } else {
150
+ // (platformSupport === USES_DEFAULT_IMPLEMENTATION)
151
+ if (!components.default) {
152
+ components.default = getDefaultComponent();
153
+ }
154
+ components[key] = components.default;
155
+ }
156
+
157
+ return components[key];
158
+ };
159
+
160
+ Component.prototype.getUIManagerCommand = function getUIManagerCommand(
161
+ name: string,
162
+ ): UIManagerCommand {
163
+ const nativeComponentName = getNativeComponentName(
164
+ this.context,
165
+ componentName,
166
+ );
167
+ return UIManager.getViewManagerConfig(nativeComponentName).Commands[name];
168
+ };
169
+
170
+ Component.prototype.getMapManagerCommand = function getMapManagerCommand(
171
+ name: string,
172
+ ): MapManagerCommand {
173
+ const nativeComponentName = `${getNativeComponentName(
174
+ this.context,
175
+ componentName,
176
+ )}Manager`;
177
+ return NativeModules[nativeComponentName][name];
178
+ };
179
+
180
+ return Component;
181
+ }
182
+
183
+ type ImplementationStatus =
184
+ | 'SUPPORTED'
185
+ | 'USES_DEFAULT_IMPLEMENTATION'
186
+ | 'NOT_SUPPORTED';
187
+
188
+ type Providers = {
189
+ google: {
190
+ ios: ImplementationStatus;
191
+ android: ImplementationStatus;
192
+ };
193
+ };
194
+
195
+ export type UIManagerCommand = number;
196
+
197
+ export type MapManagerCommand = keyof typeof Commands;
198
+
199
+ export type NativeComponent<H = unknown> =
200
+ | HostComponent<H>
201
+ | ReturnType<typeof createNotSupportedComponent>;
202
+
203
+ type Component =
204
+ | typeof MapCallout
205
+ | typeof MapCalloutSubview
206
+ | typeof MapCircle
207
+ | typeof MapHeatmap
208
+ | typeof MapLocalTile
209
+ | typeof MapMarker
210
+ | typeof MapOverlay
211
+ | typeof MapPolygon
212
+ | typeof MapPolyline
213
+ | typeof MapUrlTile
214
+ | typeof MapWMSTile;
215
+
216
+ type ComponentName =
217
+ | 'Callout'
218
+ | 'CalloutSubview'
219
+ | 'Circle'
220
+ | 'Heatmap'
221
+ | 'LocalTile'
222
+ | 'Marker'
223
+ | 'Overlay'
224
+ | 'Polygon'
225
+ | 'Polyline'
226
+ | 'UrlTile'
227
+ | 'WMSTile';
@@ -0,0 +1,17 @@
1
+ import {Image, ImageSourcePropType} from 'react-native';
2
+
3
+ export function fixImageProp(
4
+ image: ImageSourcePropType,
5
+ ): {uri: string} | ImageSourcePropType {
6
+ if (typeof image === 'string') {
7
+ return {uri: image};
8
+ }
9
+
10
+ if (typeof image === 'number') {
11
+ // Handle local image asset (require('./image.png'))
12
+ const resolvedImage = Image.resolveAssetSource(image);
13
+ return resolvedImage?.uri ? {uri: resolvedImage.uri} : image;
14
+ }
15
+
16
+ return image;
17
+ }
package/src/index.ts ADDED
@@ -0,0 +1,52 @@
1
+ import MapView, {
2
+ AnimatedMapView as Animated,
3
+ MAP_TYPES,
4
+ MapViewProps,
5
+ } from './MapView';
6
+
7
+ import Marker from './MapMarker';
8
+ export {MapMarker} from './MapMarker';
9
+ export type {MapMarkerProps} from './MapMarker';
10
+
11
+ import Overlay from './MapOverlay';
12
+ export {MapOverlay} from './MapOverlay';
13
+ export type {MapOverlayProps} from './MapOverlay';
14
+
15
+ export {default as Polyline, MapPolyline} from './MapPolyline';
16
+ export type {MapPolylineProps} from './MapPolyline';
17
+ export {default as Heatmap, MapHeatmap} from './MapHeatmap';
18
+ export type {MapHeatmapProps} from './MapHeatmap';
19
+ export {default as Polygon, MapPolygon} from './MapPolygon';
20
+ export type {MapPolygonProps} from './MapPolygon';
21
+ export {default as Circle, MapCircle} from './MapCircle';
22
+ export type {MapCircleProps} from './MapCircle';
23
+ export {default as UrlTile, MapUrlTile} from './MapUrlTile';
24
+ export type {MapUrlTileProps} from './MapUrlTile';
25
+ export {default as WMSTile, MapWMSTile} from './MapWMSTile';
26
+ export type {MapWMSTileProps} from './MapWMSTile';
27
+ export {default as LocalTile, MapLocalTile} from './MapLocalTile';
28
+ export type {MapLocalTileProps} from './MapLocalTile';
29
+ export {default as Callout, MapCallout} from './MapCallout';
30
+ export type {MapCalloutProps} from './MapCallout';
31
+ export {
32
+ default as CalloutSubview,
33
+ MapCalloutSubview,
34
+ } from './MapCalloutSubview';
35
+ export type {MapCalloutSubviewProps} from './MapCalloutSubview';
36
+ export {default as AnimatedRegion} from './AnimatedRegion';
37
+ export {default as Geojson} from './Geojson';
38
+ export type {GeojsonProps} from './Geojson';
39
+
40
+ export {Marker, Overlay};
41
+ export type {MapViewProps};
42
+ export {Animated, MAP_TYPES};
43
+
44
+ export * from './ProviderConstants';
45
+ export * from './MapView.types';
46
+ export * from './MapPolygon.types';
47
+ export * from './sharedTypes';
48
+
49
+ export const MarkerAnimated = Marker.Animated;
50
+ export const OverlayAnimated = Overlay.Animated;
51
+
52
+ export default MapView;
@@ -0,0 +1,101 @@
1
+ import {NativeSyntheticEvent} from 'react-native';
2
+
3
+ export type Provider = 'google' | undefined;
4
+
5
+ export type LatLng = {
6
+ latitude: number;
7
+ longitude: number;
8
+ };
9
+
10
+ export type Point = {
11
+ x: number;
12
+ y: number;
13
+ };
14
+
15
+ export type Region = LatLng & {
16
+ latitudeDelta: number;
17
+ longitudeDelta: number;
18
+ };
19
+
20
+ export type Frame = Point & {height: number; width: number};
21
+
22
+ export type CalloutPressEvent = NativeSyntheticEvent<{
23
+ action: 'callout-press';
24
+
25
+ /**
26
+ * @platform iOS
27
+ */
28
+ frame?: Frame;
29
+
30
+ /**
31
+ * @platform iOS
32
+ */
33
+ id?: string;
34
+
35
+ /**
36
+ * @platform iOS
37
+ */
38
+ point?: Point;
39
+
40
+ /**
41
+ * @platform Android
42
+ */
43
+ coordinate?: LatLng;
44
+
45
+ /**
46
+ * @platform Android
47
+ */
48
+ position?: Point;
49
+ }>;
50
+
51
+ export type LineCapType = 'butt' | 'round' | 'square';
52
+ export type LineJoinType = 'miter' | 'round' | 'bevel';
53
+
54
+ export type ClickEvent<T = {}> = NativeSyntheticEvent<
55
+ {coordinate: LatLng; position: Point} & T
56
+ >;
57
+
58
+ export type MarkerDeselectEvent = Omit<
59
+ ClickEvent<{
60
+ action: 'marker-deselect';
61
+ id: string;
62
+ }>,
63
+ 'position'
64
+ >;
65
+
66
+ export type MarkerSelectEvent = Omit<
67
+ ClickEvent<{id: string; action: 'marker-select'}>,
68
+ 'position'
69
+ >;
70
+
71
+ export type MarkerDragEvent = ClickEvent<{
72
+ /**
73
+ * @platform iOS
74
+ */
75
+ id?: string;
76
+ }>;
77
+
78
+ export type MarkerDragStartEndEvent = NativeSyntheticEvent<{
79
+ coordinate: LatLng;
80
+
81
+ /**
82
+ * @platform iOS
83
+ */
84
+ id?: string;
85
+
86
+ /**
87
+ * @platform Android
88
+ */
89
+ position?: Point;
90
+ }>;
91
+
92
+ export type MarkerPressEvent = NativeSyntheticEvent<{
93
+ id: string;
94
+ action: 'marker-press';
95
+ coordinate: LatLng;
96
+
97
+ /**
98
+ * @platform Android
99
+ */
100
+ position?: Point;
101
+ }>;
@@ -0,0 +1,36 @@
1
+ import type {TurboModule} from 'react-native';
2
+ import {TurboModuleRegistry} from 'react-native';
3
+ import type {Double} from 'react-native/Libraries/Types/CodegenTypes';
4
+ import type {Camera} from './NativeComponentMapView';
5
+ import {Address} from 'react-native-maps';
6
+
7
+ type LatLng = {
8
+ latitude: Double;
9
+ longitude: Double;
10
+ };
11
+
12
+ type Point = Readonly<{
13
+ x: Double; // Non-nullable Double for x
14
+ y: Double; // Non-nullable Double for y
15
+ }>;
16
+
17
+ export type Region = Readonly<
18
+ LatLng & {
19
+ latitudeDelta: Double; // Non-nullable Double for latitudeDelta
20
+ longitudeDelta: Double; // Non-nullable Double for longitudeDelta
21
+ }
22
+ >;
23
+
24
+ export type MapBoundaries = {northEast: LatLng; southWest: LatLng};
25
+
26
+ export interface Spec extends TurboModule {
27
+ getCamera(tag: Double): Promise<Camera>;
28
+ getMarkersFrames(tag: Double, onlyVisible: boolean): Promise<unknown>;
29
+ getMapBoundaries(tag: Double): Promise<MapBoundaries>;
30
+ takeSnapshot(tag: Double, config: string): Promise<string>;
31
+ getAddressFromCoordinates(tag: Double, coordinate: LatLng): Promise<Address>;
32
+ getPointForCoordinate(tag: Double, coordinate: LatLng): Promise<Point>;
33
+ getCoordinateForPoint(tag: Double, point: Point): Promise<LatLng>;
34
+ }
35
+
36
+ export default TurboModuleRegistry.getEnforcing<Spec>('RNMapsAirModule');
@@ -0,0 +1,63 @@
1
+ import type {HostComponent, ViewProps} from 'react-native';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ import {
5
+ Double,
6
+ BubblingEventHandler,
7
+ } from 'react-native/Libraries/Types/CodegenTypes';
8
+
9
+ export type LatLng = Readonly<{
10
+ latitude: Double; // Non-nullable Double for latitude
11
+ longitude: Double; // Non-nullable Double for longitude
12
+ }>;
13
+
14
+ export type CalloutPressEvent = BubblingEventHandler<
15
+ Readonly<{
16
+ action?: string;
17
+ id: string;
18
+ coordinate: {
19
+ latitude: Double; // Inlined LatLng
20
+ longitude: Double;
21
+ };
22
+ position?: {
23
+ x: Double; // Inlined Point
24
+ y: Double;
25
+ }; // Optional position for Android
26
+ }>
27
+ >;
28
+
29
+ export interface CalloutFabricNativeProps extends ViewProps {
30
+ /**
31
+ * If `true`, clicks on transparent areas in callout will be passed to map.
32
+ *
33
+ * @default false
34
+ * @platform iOS: Supported
35
+ * @platform Android: Not supported
36
+ */
37
+ alphaHitTest?: boolean;
38
+
39
+ /**
40
+ * Callback that is called when the user presses on the callout
41
+ *
42
+ * @platform iOS: Apple Maps only
43
+ * @platform Android: Supported
44
+ */
45
+ onPress?: CalloutPressEvent;
46
+
47
+ /**
48
+ * If `false`, a default "tooltip" bubble window will be drawn around this callouts children.
49
+ * If `true`, the child views can fully customize their appearance, including any "bubble" like styles.
50
+ *
51
+ * @default false
52
+ * @platform iOS: Supported
53
+ * @platform Android: Supported
54
+ */
55
+ tooltip?: boolean;
56
+ }
57
+
58
+ export default codegenNativeComponent<CalloutFabricNativeProps>(
59
+ 'RNMapsCallout',
60
+ {
61
+ excludedPlatforms: ['iOS'],
62
+ },
63
+ ) as HostComponent<CalloutFabricNativeProps>;
@@ -0,0 +1,93 @@
1
+ import type {HostComponent, ViewProps, ColorValue} from 'react-native';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ import {
5
+ Double,
6
+ Float,
7
+ BubblingEventHandler,
8
+ } from 'react-native/Libraries/Types/CodegenTypes';
9
+
10
+ export type LatLng = Readonly<{
11
+ latitude: Double; // Non-nullable Double for latitude
12
+ longitude: Double; // Non-nullable Double for longitude
13
+ }>;
14
+
15
+ export type CirclePressEventHandler = BubblingEventHandler<
16
+ Readonly<{
17
+ action?: string;
18
+ id: string;
19
+ coordinate: {
20
+ latitude: Double; // Inlined LatLng
21
+ longitude: Double;
22
+ };
23
+ position?: {
24
+ x: Double; // Inlined Point
25
+ y: Double;
26
+ }; // Optional position for Android
27
+ }>
28
+ >;
29
+
30
+ export interface CircleFabricNativeProps extends ViewProps {
31
+ /**
32
+ * The coordinates of the center of the circle.
33
+ *
34
+ * @platform iOS: Supported
35
+ * @platform Android: Supported
36
+ */
37
+ center: LatLng;
38
+
39
+ /**
40
+ * The stroke color to use for the path.
41
+ *
42
+ * @default `#000`, `rgba(r,g,b,0.5)`
43
+ * @platform iOS: Supported
44
+ * @platform Android: Supported
45
+ */
46
+ fillColor?: ColorValue;
47
+
48
+ /**
49
+ * The radius of the circle to be drawn (in meters)
50
+ *
51
+ * @platform iOS: Supported
52
+ * @platform Android: Supported
53
+ */
54
+ radius: Double;
55
+
56
+ /**
57
+ * The stroke color to use for the path.
58
+ *
59
+ * @default `#000`, `rgba(r,g,b,0.5)`
60
+ * @platform iOS: Supported
61
+ * @platform Android: Supported
62
+ */
63
+ strokeColor?: ColorValue;
64
+
65
+ /**
66
+ * Callback that is called when user taps on the map.
67
+ *
68
+ * @platform iOS: Supported
69
+ * @platform Android: Supported
70
+ */
71
+ onPress?: CirclePressEventHandler;
72
+
73
+ /**
74
+ * The stroke width to use for the path.
75
+ *
76
+ * @default 1
77
+ * @platform iOS: Supported
78
+ * @platform Android: Supported
79
+ */
80
+ strokeWidth?: Float;
81
+
82
+ /**
83
+ * Boolean to allow a polygon to be tappable and use the onPress function.
84
+ *
85
+ * @platform iOS: Google Maps only
86
+ * @platform Android: Supported
87
+ */
88
+ tappable?: boolean;
89
+ }
90
+
91
+ export default codegenNativeComponent<CircleFabricNativeProps>('RNMapsCircle', {
92
+ excludedPlatforms: ['iOS'],
93
+ }) as HostComponent<CircleFabricNativeProps>;