react-native-maps 1.21.0-alpha.11 → 1.21.0-alpha.110

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 (133) hide show
  1. package/android/build.gradle +77 -57
  2. package/android/gradlew +1 -2
  3. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  4. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  5. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  6. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +619 -0
  7. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  8. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  9. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  10. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  11. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  12. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  13. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  14. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  15. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  16. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  17. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  18. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  19. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  20. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  21. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  22. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  23. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  24. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  25. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  26. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  27. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  28. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  29. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  30. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  31. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  32. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  33. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  34. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  35. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  36. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  37. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  38. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +39 -3
  39. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  40. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  41. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  42. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  43. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  44. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  45. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  46. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  47. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  48. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  49. package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
  50. package/ios/AirGoogleMaps/AIRGMSMarker.h +1 -1
  51. package/ios/AirGoogleMaps/AIRGoogleMap.h +9 -10
  52. package/ios/AirGoogleMaps/AIRGoogleMap.m +112 -74
  53. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  54. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
  55. package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +2 -0
  56. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +347 -243
  57. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  58. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +2 -1
  59. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +30 -0
  60. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  61. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  62. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  63. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  64. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  65. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +2 -0
  66. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +137 -57
  67. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  68. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  69. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  70. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  71. package/ios/AirMaps/AIRMap.h +7 -7
  72. package/ios/AirMaps/AIRMap.m +227 -236
  73. package/ios/AirMaps/AIRMapManager.m +13 -7
  74. package/ios/AirMaps/AIRMapMarker.h +1 -0
  75. package/ios/AirMaps/AIRMapMarker.m +165 -103
  76. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  77. package/ios/AirMaps/NSObject+DynamicLoad.h +16 -0
  78. package/ios/AirMaps/NSObject+DynamicLoad.m +28 -0
  79. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  80. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  81. package/ios/AirMaps/RNMapsAirModuleDelegate.h +2 -2
  82. package/ios/AirMaps/RNMapsMapView.mm +332 -295
  83. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  84. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  85. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  86. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  87. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  88. package/lib/MapCircle.d.ts +1 -1
  89. package/lib/MapHeatmap.d.ts +2 -2
  90. package/lib/MapHeatmap.js +1 -1
  91. package/lib/MapMarker.d.ts +16 -3
  92. package/lib/MapMarker.js +55 -13
  93. package/lib/MapMarkerNativeComponent.js +0 -2
  94. package/lib/MapOverlay.d.ts +1 -0
  95. package/lib/MapOverlay.js +11 -9
  96. package/lib/MapPolygon.d.ts +1 -1
  97. package/lib/MapPolyline.d.ts +7 -7
  98. package/lib/MapView.d.ts +17 -29
  99. package/lib/MapView.js +114 -128
  100. package/lib/MapView.types.d.ts +1 -1
  101. package/lib/createFabricMap.d.ts +1 -0
  102. package/lib/createFabricMap.js +17 -4
  103. package/lib/decorateMapComponent.js +40 -0
  104. package/lib/fixImageProp.d.ts +4 -0
  105. package/lib/fixImageProp.js +16 -0
  106. package/lib/specs/NativeAirMapsModule.d.ts +2 -2
  107. package/lib/specs/NativeComponentCallout.d.ts +46 -0
  108. package/lib/specs/NativeComponentCallout.js +9 -0
  109. package/lib/specs/NativeComponentCircle.d.ts +74 -0
  110. package/lib/specs/NativeComponentCircle.js +7 -0
  111. package/lib/specs/NativeComponentGoogleMapView.d.ts +19 -22
  112. package/lib/specs/NativeComponentGoogleMapView.js +1 -0
  113. package/lib/specs/NativeComponentGooglePolygon.d.ts +75 -0
  114. package/lib/specs/NativeComponentGooglePolygon.js +7 -0
  115. package/lib/specs/NativeComponentMapView.d.ts +43 -56
  116. package/lib/specs/NativeComponentMapView.js +2 -3
  117. package/lib/specs/NativeComponentMarker.d.ts +258 -0
  118. package/lib/specs/NativeComponentMarker.js +19 -0
  119. package/lib/specs/NativeComponentOverlay.d.ts +67 -0
  120. package/lib/specs/NativeComponentOverlay.js +7 -0
  121. package/lib/specs/NativeComponentPolyline.d.ts +101 -0
  122. package/lib/specs/NativeComponentPolyline.js +7 -0
  123. package/package.json +21 -19
  124. package/react-native-maps.podspec +34 -15
  125. package/specs/NativeAirMapsModule.ts +36 -0
  126. package/specs/NativeComponentCallout.ts +63 -0
  127. package/specs/NativeComponentCircle.ts +94 -0
  128. package/specs/NativeComponentGoogleMapView.ts +913 -0
  129. package/specs/NativeComponentGooglePolygon.ts +94 -0
  130. package/specs/NativeComponentMapView.ts +1059 -0
  131. package/specs/NativeComponentMarker.ts +326 -0
  132. package/specs/NativeComponentOverlay.ts +89 -0
  133. package/specs/NativeComponentPolyline.ts +124 -0
@@ -1,85 +1,105 @@
1
1
  def safeExtGet(prop, fallback) {
2
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
2
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
3
3
  }
4
4
 
5
5
  buildscript {
6
- // The Android Gradle plugin is only required when opening the android folder stand-alone.
7
- // This avoids unnecessary downloads and potential conflicts when the library is included as a
8
- // module dependency in an application project.
9
- if (project == rootProject) {
10
- repositories {
11
- google()
12
- mavenCentral()
6
+ def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : '2.0.21'
7
+ // The Android Gradle plugin is only required when opening the android folder stand-alone.
8
+ // This avoids unnecessary downloads and potential conflicts when the library is included as a
9
+ // module dependency in an application project.
10
+ if (project == rootProject) {
11
+ repositories {
12
+ google()
13
+ mavenCentral()
14
+ }
15
+ dependencies {
16
+ classpath("com.android.tools.build:gradle:8.7.2")
17
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}")
18
+ }
13
19
  }
14
- dependencies {
15
- classpath("com.android.tools.build:gradle:7.6.3")
16
- }
17
- }
18
20
  }
19
21
 
20
22
  def supportsNamespace() {
21
- def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
22
- def major = parsed[0].toInteger()
23
- def minor = parsed[1].toInteger()
23
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
24
+ def major = parsed[0].toInteger()
25
+ def minor = parsed[1].toInteger()
24
26
 
25
- // Namespace support was added in 7.3.0
26
- if (major == 7 && minor >= 3) {
27
- return true
28
- }
27
+ // Namespace support was added in 7.3.0
28
+ if (major == 7 && minor >= 3) {
29
+ return true
30
+ }
29
31
 
30
- return major >= 8
32
+ return major >= 8
31
33
  }
32
34
 
33
35
  def isNewArchitectureEnabled() {
34
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
36
+ return project.hasProperty("newArchEnabled") && (project.newArchEnabled == "true" || project.newArchEnabled == true)
35
37
  }
36
38
 
37
39
  apply plugin: 'com.android.library'
38
40
  if (isNewArchitectureEnabled()) {
39
- apply plugin: 'com.facebook.react'
41
+ apply plugin: 'com.facebook.react'
40
42
  }
41
43
  apply plugin: 'kotlin-android'
42
44
 
43
45
  android {
44
- if (supportsNamespace()) {
45
- namespace "com.rnmaps.maps"
46
- }
47
-
48
- compileSdk safeExtGet('compileSdkVersion', 34)
49
-
50
- defaultConfig {
51
- minSdkVersion safeExtGet('minSdkVersion', 21)
52
- targetSdkVersion safeExtGet('targetSdkVersion', 34)
53
-
54
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
55
- }
56
- packagingOptions {
57
- excludes = [
58
- "META-INF",
59
- "META-INF/**",
60
- ]
61
- }
46
+ if (supportsNamespace()) {
47
+ namespace "com.rnmaps.maps"
48
+ }
49
+
50
+ if (rootProject.hasProperty("ndkPath")) {
51
+ ndkPath rootProject.ext.ndkPath
52
+ }
53
+ if (rootProject.hasProperty("ndkVersion")) {
54
+ ndkVersion rootProject.ext.ndkVersion
55
+ }
56
+
57
+ compileSdk safeExtGet('compileSdkVersion', 35)
58
+
59
+ defaultConfig {
60
+ minSdkVersion safeExtGet('minSdkVersion', 21)
61
+ targetSdkVersion safeExtGet('targetSdkVersion', 34)
62
+
63
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
64
+
65
+ ndk {
66
+ abiFilters(*reactNativeArchitectures())
67
+ }
68
+ }
69
+ packagingOptions {
70
+ excludes = [
71
+ "META-INF",
72
+ "META-INF/**",
73
+ "**/libreact_render*.so",
74
+ ]
75
+ }
76
+
77
+ buildFeatures {
78
+ buildConfig = true
79
+ prefab = true
80
+ }
81
+ }
82
+
83
+ def reactNativeArchitectures() {
84
+ def value = project.getProperties().get("reactNativeArchitectures")
85
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
62
86
  }
63
87
 
64
88
  repositories {
65
- mavenLocal()
66
- mavenCentral()
67
- maven {
68
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
69
- url "$rootDir/../node_modules/react-native/android"
70
- }
71
- maven {
72
- // Android JSC is installed from npm
73
- url "$rootDir/../node_modules/jsc-android/dist"
74
- }
75
- google()
89
+ mavenLocal()
90
+ mavenCentral()
91
+ maven {
92
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
93
+ url "$projectDir/../node_modules/react-native/android"
94
+ }
95
+ google()
76
96
  }
77
97
 
78
98
  dependencies {
79
- implementation 'com.facebook.react:react-native:+'
80
- implementation "com.google.android.gms:play-services-base:${safeExtGet('playServicesVersion', '18.2.0')}"
81
- implementation "com.google.android.gms:play-services-maps:${safeExtGet('playServicesVersion', '18.2.0')}"
82
- implementation "com.google.android.gms:play-services-location:21.0.1"
83
- implementation 'com.google.maps.android:android-maps-utils:3.8.2'
84
- implementation "androidx.work:work-runtime:2.7.1"
99
+ implementation 'com.facebook.react:react-native:+'
100
+ implementation "com.google.android.gms:play-services-base:${safeExtGet('googlePlayServicesBaseVersion', '18.5.0')}"
101
+ implementation "com.google.android.gms:play-services-maps:${safeExtGet('googlePlayServicesMapsVersion', '19.1.0')}"
102
+ implementation "com.google.android.gms:play-services-location:${safeExtGet('googlePlayServicesLocationVersion', '21.3.0')}"
103
+ implementation 'com.google.maps.android:android-maps-utils:3.10.0'
104
+ implementation "androidx.work:work-runtime:2.9.1"
85
105
  }
package/android/gradlew CHANGED
@@ -86,8 +86,7 @@ done
86
86
  # shellcheck disable=SC2034
87
87
  APP_BASE_NAME=${0##*/}
88
88
  # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
89
- APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
90
- ' "$PWD" ) || exit
89
+ APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
91
90
 
92
91
  # Use the maximum available, or set MAX_FD != -1 to use that value.
93
92
  MAX_FD=maximum
@@ -0,0 +1,77 @@
1
+ package com.rnmaps.fabric;
2
+
3
+
4
+ import androidx.annotation.Nullable;
5
+
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.module.annotations.ReactModule;
8
+ import com.facebook.react.uimanager.LayoutShadowNode;
9
+ import com.facebook.react.uimanager.ThemedReactContext;
10
+ import com.facebook.react.uimanager.ViewGroupManager;
11
+ import com.facebook.react.uimanager.ViewManagerDelegate;
12
+ import com.facebook.react.viewmanagers.RNMapsCalloutManagerDelegate;
13
+ import com.facebook.react.viewmanagers.RNMapsCalloutManagerInterface;
14
+ import com.rnmaps.maps.MapCallout;
15
+ import com.rnmaps.maps.SizeReportingShadowNode;
16
+
17
+ import java.util.HashMap;
18
+ import java.util.Map;
19
+
20
+ @ReactModule(name = CalloutManager.REACT_CLASS)
21
+ public class CalloutManager extends ViewGroupManager<MapCallout> implements RNMapsCalloutManagerInterface<MapCallout> {
22
+
23
+ public CalloutManager(ReactApplicationContext context){
24
+ super(context);
25
+ }
26
+ private final RNMapsCalloutManagerDelegate<MapCallout, CalloutManager> delegate =
27
+ new RNMapsCalloutManagerDelegate<>(this);
28
+
29
+ @Override
30
+ public ViewManagerDelegate<MapCallout> getDelegate() {
31
+ return delegate;
32
+ }
33
+
34
+ @Override
35
+ public String getName() {
36
+ return REACT_CLASS;
37
+ }
38
+
39
+ @Override
40
+ public MapCallout createViewInstance(ThemedReactContext context) {
41
+ return new MapCallout(context);
42
+ }
43
+
44
+
45
+ public static final String REACT_CLASS = "RNMapsCallout";
46
+
47
+ @Nullable
48
+ @Override
49
+ public Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
50
+ return MapCallout.getExportedCustomBubblingEventTypeConstants();
51
+ }
52
+
53
+ @Nullable
54
+ @Override
55
+ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
56
+ return new HashMap<>();
57
+ }
58
+
59
+
60
+ @Override
61
+ public void setAlphaHitTest(MapCallout view, boolean value) {
62
+ /// do nothing
63
+ }
64
+
65
+ @Override
66
+ public void setTooltip(MapCallout view, boolean value) {
67
+ view.setTooltip(value);
68
+ }
69
+ @Override
70
+ public LayoutShadowNode createShadowNodeInstance() {
71
+ // we use a custom shadow node that emits the width/height of the view
72
+ // after layout with the updateExtraData method. Without this, we can't generate
73
+ // a bitmap of the appropriate width/height of the rendered view.
74
+ return new SizeReportingShadowNode();
75
+ }
76
+
77
+ }
@@ -0,0 +1,94 @@
1
+ package com.rnmaps.fabric;
2
+
3
+
4
+ import androidx.annotation.Nullable;
5
+
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReadableMap;
8
+ import com.facebook.react.module.annotations.ReactModule;
9
+ import com.facebook.react.uimanager.ThemedReactContext;
10
+ import com.facebook.react.uimanager.ViewGroupManager;
11
+ import com.facebook.react.uimanager.ViewManagerDelegate;
12
+ import com.facebook.react.viewmanagers.RNMapsCircleManagerDelegate;
13
+ import com.facebook.react.viewmanagers.RNMapsCircleManagerInterface;
14
+ import com.rnmaps.maps.MapCircle;
15
+
16
+ import java.util.HashMap;
17
+ import java.util.Map;
18
+
19
+ @ReactModule(name = CircleManager.REACT_CLASS)
20
+ public class CircleManager extends ViewGroupManager<MapCircle> implements RNMapsCircleManagerInterface<MapCircle> {
21
+ public CircleManager(ReactApplicationContext context) {
22
+ super(context);
23
+ }
24
+
25
+ private final RNMapsCircleManagerDelegate<MapCircle, CircleManager> delegate =
26
+ new RNMapsCircleManagerDelegate<>(this);
27
+
28
+ @Override
29
+ public ViewManagerDelegate<MapCircle> getDelegate() {
30
+ return delegate;
31
+ }
32
+
33
+ @Override
34
+ public String getName() {
35
+ return REACT_CLASS;
36
+ }
37
+
38
+ @Override
39
+ public MapCircle createViewInstance(ThemedReactContext context) {
40
+ return new MapCircle(context);
41
+ }
42
+
43
+
44
+ public static final String REACT_CLASS = "RNMapsCircle";
45
+
46
+ @Nullable
47
+ @Override
48
+ public Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
49
+ return MapCircle.getExportedCustomBubblingEventTypeConstants();
50
+ }
51
+
52
+ @Nullable
53
+ @Override
54
+ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
55
+ return new HashMap<>();
56
+ }
57
+
58
+
59
+
60
+ @Override
61
+ public void setZIndex(MapCircle view, float value) {
62
+ view.setZIndex(value);
63
+ }
64
+
65
+ @Override
66
+ public void setCenter(MapCircle view, @Nullable ReadableMap value) {
67
+ view.setCenter(value);
68
+ }
69
+
70
+ @Override
71
+ public void setFillColor(MapCircle view, @Nullable Integer value) {
72
+ view.setFillColor(value);
73
+ }
74
+
75
+ @Override
76
+ public void setRadius(MapCircle view, double value) {
77
+ view.setRadius(value);
78
+ }
79
+
80
+ @Override
81
+ public void setStrokeColor(MapCircle view, @Nullable Integer value) {
82
+ view.setStrokeColor(value);
83
+ }
84
+
85
+ @Override
86
+ public void setStrokeWidth(MapCircle view, float value) {
87
+ view.setStrokeWidth(value);
88
+ }
89
+
90
+ @Override
91
+ public void setTappable(MapCircle view, boolean value) {
92
+ view.setTappable(value);
93
+ }
94
+ }
@@ -0,0 +1,86 @@
1
+ package com.rnmaps.fabric;
2
+
3
+ import com.facebook.react.bridge.Arguments;
4
+ import com.facebook.react.bridge.WritableArray;
5
+ import com.facebook.react.bridge.WritableMap;
6
+
7
+ import org.json.JSONArray;
8
+ import org.json.JSONException;
9
+ import org.json.JSONObject;
10
+
11
+ import java.util.Iterator;
12
+
13
+ public class JSONUtil {
14
+ public static WritableMap convertJsonToWritable(JSONObject jsonObject) throws JSONException {
15
+ WritableMap map = Arguments.createMap();
16
+ Iterator<String> iterator = jsonObject.keys();
17
+
18
+ while (iterator.hasNext()) {
19
+ String key = iterator.next();
20
+ Object value = jsonObject.get(key);
21
+
22
+ if (value == JSONObject.NULL) {
23
+ map.putNull(key);
24
+ }
25
+ // Check primitive types first
26
+ else if (value instanceof Integer) {
27
+ map.putInt(key, jsonObject.getInt(key));
28
+ }
29
+ else if (value instanceof Long) {
30
+ map.putDouble(key, ((Long) value).doubleValue());
31
+ }
32
+ else if (value instanceof Double) {
33
+ map.putDouble(key, jsonObject.getDouble(key));
34
+ }
35
+ else if (value instanceof Boolean) {
36
+ map.putBoolean(key, jsonObject.getBoolean(key));
37
+ }
38
+ else if (value instanceof String) {
39
+ map.putString(key, jsonObject.getString(key));
40
+ }
41
+ // Check complex types
42
+ else if (value instanceof JSONObject) {
43
+ map.putMap(key, convertJsonToWritable(jsonObject.getJSONObject(key)));
44
+ }
45
+ else if (value instanceof JSONArray) {
46
+ map.putArray(key, convertJsonArrayToWritable(jsonObject.getJSONArray(key)));
47
+ }
48
+ }
49
+
50
+ return map;
51
+ }
52
+ public static WritableArray convertJsonArrayToWritable(JSONArray jsonArray) throws JSONException {
53
+ WritableArray array = Arguments.createArray();
54
+
55
+ for (int i = 0; i < jsonArray.length(); i++) {
56
+ Object value = jsonArray.get(i);
57
+
58
+ if (value == JSONObject.NULL) {
59
+ array.pushNull();
60
+ }
61
+ else if (value instanceof Integer) {
62
+ array.pushInt((Integer) value);
63
+ }
64
+ else if (value instanceof Long) {
65
+ array.pushDouble(((Long) value).doubleValue());
66
+ }
67
+ else if (value instanceof Double) {
68
+ array.pushDouble((Double) value);
69
+ }
70
+ else if (value instanceof Boolean) {
71
+ array.pushBoolean((Boolean) value);
72
+ }
73
+ else if (value instanceof String) {
74
+ array.pushString((String) value);
75
+ }
76
+ else if (value instanceof JSONObject) {
77
+ array.pushMap(convertJsonToWritable((JSONObject) value));
78
+ }
79
+ else if (value instanceof JSONArray) {
80
+ array.pushArray(convertJsonArrayToWritable((JSONArray) value));
81
+ }
82
+ }
83
+
84
+ return array;
85
+ }
86
+ }