react-native-maps 1.21.0-alpha.13 → 1.21.0-alpha.130

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 (243) 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 +206 -0
  18. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +73 -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/rnmaps/fabric/CalloutManager.java +77 -0
  26. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  27. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  28. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +619 -0
  29. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  30. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  31. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  32. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  33. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  34. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  35. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  36. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  37. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  38. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  39. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  40. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  41. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  42. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  43. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  45. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  46. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  47. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  48. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  60. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +40 -4
  61. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  62. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  63. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  64. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  65. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  66. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  67. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  68. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  69. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  70. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  71. package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
  72. package/android/src/main/jni/CMakeLists.txt +36 -0
  73. package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
  74. package/android/src/main/jni/RNMapsSpecs.h +31 -0
  75. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  76. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +31 -0
  77. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +977 -0
  78. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +846 -0
  79. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +193 -0
  80. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1223 -0
  81. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  82. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  83. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +24 -0
  84. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +109 -0
  85. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  86. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +113 -0
  87. package/ios/AirGoogleMaps/AIRGoogleMap.h +10 -11
  88. package/ios/AirGoogleMaps/AIRGoogleMap.m +103 -69
  89. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  90. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
  91. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +6 -3
  92. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  93. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +3 -0
  94. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  95. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  96. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  97. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  98. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  99. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +1 -1
  100. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +112 -43
  101. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  102. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  103. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  104. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  105. package/ios/AirMaps/AIRMap.h +8 -9
  106. package/ios/AirMaps/AIRMap.m +222 -239
  107. package/ios/AirMaps/AIRMapManager.m +10 -7
  108. package/ios/AirMaps/AIRMapMarker.h +1 -0
  109. package/ios/AirMaps/AIRMapMarker.m +165 -103
  110. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  111. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
  112. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
  113. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  114. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
  115. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  116. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  117. package/ios/AirMaps/RNMapsDefines.h +0 -0
  118. package/ios/AirMaps/RNMapsMapView.h +1 -1
  119. package/ios/AirMaps/RNMapsMapView.mm +119 -95
  120. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  121. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  122. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  123. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  124. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  125. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  126. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  127. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  128. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  129. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  130. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  131. package/ios/{AirMaps → generated}/RNMapsAirModuleDelegate.h +2 -2
  132. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  133. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
  134. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
  135. package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
  136. package/ios/generated/RNMapsSpecs/Props.cpp +193 -0
  137. package/ios/generated/RNMapsSpecs/Props.h +1223 -0
  138. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
  139. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  140. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
  141. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
  142. package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
  143. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  144. package/ios/generated/RNMapsSpecs/States.h +113 -0
  145. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  146. package/ios/generated/RNMapsSpecsJSI.h +268 -0
  147. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  148. package/package.json +25 -18
  149. package/react-native-google-maps.podspec +26 -0
  150. package/react-native-maps-generated.podspec +31 -0
  151. package/react-native-maps.podspec +53 -15
  152. package/react-native.config.js +16 -0
  153. package/src/AnimatedRegion.ts +169 -0
  154. package/src/Geojson.tsx +541 -0
  155. package/src/MapCallout.tsx +77 -0
  156. package/src/MapCalloutSubview.tsx +64 -0
  157. package/src/MapCircle.tsx +162 -0
  158. package/src/MapHeatmap.tsx +125 -0
  159. package/src/MapLocalTile.tsx +60 -0
  160. package/src/MapMarker.tsx +531 -0
  161. package/src/MapMarkerNativeComponent.ts +51 -0
  162. package/src/MapOverlay.tsx +156 -0
  163. package/src/MapPolygon.tsx +188 -0
  164. package/src/MapPolygon.types.ts +25 -0
  165. package/src/MapPolyline.tsx +215 -0
  166. package/src/MapUrlTile.tsx +169 -0
  167. package/src/MapView.tsx +1223 -0
  168. package/src/MapView.types.ts +212 -0
  169. package/src/MapView.web.ts +2 -0
  170. package/src/MapViewNativeComponent.ts +86 -0
  171. package/src/MapWMSTile.tsx +148 -0
  172. package/src/ProviderConstants.ts +2 -0
  173. package/src/createFabricMap.tsx +253 -0
  174. package/src/decorateMapComponent.ts +219 -0
  175. package/src/fixImageProp.ts +17 -0
  176. package/src/index.ts +52 -0
  177. package/src/sharedTypes.ts +101 -0
  178. package/src/specs/NativeAirMapsModule.ts +36 -0
  179. package/src/specs/NativeComponentCallout.ts +63 -0
  180. package/src/specs/NativeComponentCircle.ts +93 -0
  181. package/src/specs/NativeComponentGoogleMapView.ts +913 -0
  182. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  183. package/src/specs/NativeComponentMapView.ts +1091 -0
  184. package/src/specs/NativeComponentMarker.ts +326 -0
  185. package/src/specs/NativeComponentOverlay.ts +89 -0
  186. package/src/specs/NativeComponentPolyline.ts +124 -0
  187. package/lib/AnimatedRegion.d.ts +0 -19
  188. package/lib/AnimatedRegion.js +0 -134
  189. package/lib/Geojson.d.ts +0 -204
  190. package/lib/Geojson.js +0 -166
  191. package/lib/MapCallout.d.ts +0 -40
  192. package/lib/MapCallout.js +0 -51
  193. package/lib/MapCalloutSubview.d.ts +0 -34
  194. package/lib/MapCalloutSubview.js +0 -48
  195. package/lib/MapCircle.d.ts +0 -117
  196. package/lib/MapCircle.js +0 -53
  197. package/lib/MapHeatmap.d.ts +0 -78
  198. package/lib/MapHeatmap.js +0 -59
  199. package/lib/MapLocalTile.d.ts +0 -35
  200. package/lib/MapLocalTile.js +0 -44
  201. package/lib/MapMarker.d.ts +0 -309
  202. package/lib/MapMarker.js +0 -116
  203. package/lib/MapMarkerNativeComponent.d.ts +0 -15
  204. package/lib/MapMarkerNativeComponent.js +0 -17
  205. package/lib/MapOverlay.d.ts +0 -87
  206. package/lib/MapOverlay.js +0 -63
  207. package/lib/MapPolygon.d.ts +0 -140
  208. package/lib/MapPolygon.js +0 -53
  209. package/lib/MapPolygon.types.d.ts +0 -18
  210. package/lib/MapPolygon.types.js +0 -2
  211. package/lib/MapPolyline.d.ts +0 -156
  212. package/lib/MapPolyline.js +0 -53
  213. package/lib/MapUrlTile.d.ts +0 -134
  214. package/lib/MapUrlTile.js +0 -44
  215. package/lib/MapView.d.ts +0 -715
  216. package/lib/MapView.js +0 -447
  217. package/lib/MapView.types.d.ts +0 -161
  218. package/lib/MapView.types.js +0 -2
  219. package/lib/MapView.web.d.ts +0 -1
  220. package/lib/MapView.web.js +0 -9
  221. package/lib/MapViewNativeComponent.d.ts +0 -18
  222. package/lib/MapViewNativeComponent.js +0 -19
  223. package/lib/MapWMSTile.d.ts +0 -116
  224. package/lib/MapWMSTile.js +0 -44
  225. package/lib/ProviderConstants.d.ts +0 -2
  226. package/lib/ProviderConstants.js +0 -5
  227. package/lib/createFabricMap.d.ts +0 -23
  228. package/lib/createFabricMap.js +0 -175
  229. package/lib/decorateMapComponent.d.ts +0 -36
  230. package/lib/decorateMapComponent.js +0 -80
  231. package/lib/index.d.ts +0 -38
  232. package/lib/index.js +0 -81
  233. package/lib/sharedTypes.d.ts +0 -81
  234. package/lib/sharedTypes.js +0 -2
  235. package/lib/sharedTypesInternal.js +0 -2
  236. package/lib/specs/NativeAirMapsModule.d.ts +0 -31
  237. package/lib/specs/NativeAirMapsModule.js +0 -4
  238. package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
  239. package/lib/specs/NativeComponentGoogleMapView.js +0 -21
  240. package/lib/specs/NativeComponentMapView.d.ts +0 -855
  241. package/lib/specs/NativeComponentMapView.js +0 -21
  242. /package/ios/{AirMaps → generated}/RNMapsHostVewDelegate.h +0 -0
  243. /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
@@ -4,161 +4,227 @@ import android.content.Context;
4
4
 
5
5
  import com.facebook.react.bridge.ReadableArray;
6
6
  import com.facebook.react.bridge.ReadableMap;
7
+ import com.facebook.react.common.MapBuilder;
8
+ import com.google.android.gms.maps.model.ButtCap;
7
9
  import com.google.android.gms.maps.model.Cap;
8
10
  import com.google.android.gms.maps.model.Dash;
9
11
  import com.google.android.gms.maps.model.Dot;
10
12
  import com.google.android.gms.maps.model.Gap;
13
+ import com.google.android.gms.maps.model.JointType;
11
14
  import com.google.android.gms.maps.model.LatLng;
12
15
  import com.google.android.gms.maps.model.PatternItem;
13
16
  import com.google.android.gms.maps.model.Polyline;
14
17
  import com.google.android.gms.maps.model.PolylineOptions;
15
18
  import com.google.android.gms.maps.model.RoundCap;
19
+ import com.google.android.gms.maps.model.SquareCap;
20
+ import com.google.android.gms.maps.model.StrokeStyle;
21
+ import com.google.android.gms.maps.model.StyleSpan;
16
22
  import com.google.maps.android.collections.PolylineManager;
23
+ import com.rnmaps.fabric.event.OnPressEvent;
17
24
 
18
25
  import java.util.ArrayList;
19
26
  import java.util.List;
27
+ import java.util.Map;
20
28
 
21
29
  public class MapPolyline extends MapFeature {
22
30
 
23
- private PolylineOptions polylineOptions;
24
- private Polyline polyline;
25
-
26
- private List<LatLng> coordinates;
27
- private int color;
28
- private float width;
29
- private boolean tappable;
30
- private boolean geodesic;
31
- private float zIndex;
32
- private Cap lineCap = new RoundCap();
33
- private ReadableArray patternValues;
34
- private List<PatternItem> pattern;
35
-
36
- public MapPolyline(Context context) {
37
- super(context);
38
- }
39
-
40
- public void setCoordinates(ReadableArray coordinates) {
41
- this.coordinates = new ArrayList<>(coordinates.size());
42
- for (int i = 0; i < coordinates.size(); i++) {
43
- ReadableMap coordinate = coordinates.getMap(i);
44
- this.coordinates.add(i,
45
- new LatLng(coordinate.getDouble("latitude"), coordinate.getDouble("longitude")));
46
- }
47
- if (polyline != null) {
48
- polyline.setPoints(this.coordinates);
49
- }
50
- }
51
-
52
- public void setColor(int color) {
53
- this.color = color;
54
- if (polyline != null) {
55
- polyline.setColor(color);
56
- }
57
- }
58
-
59
- public void setWidth(float width) {
60
- this.width = width;
61
- if (polyline != null) {
62
- polyline.setWidth(width);
63
- }
64
- }
65
-
66
- public void setZIndex(float zIndex) {
67
- this.zIndex = zIndex;
68
- if (polyline != null) {
69
- polyline.setZIndex(zIndex);
70
- }
71
- }
72
-
73
- public void setTappable(boolean tapabble) {
74
- this.tappable = tapabble;
75
- if (polyline != null) {
76
- polyline.setClickable(tappable);
77
- }
78
- }
79
-
80
- public void setGeodesic(boolean geodesic) {
81
- this.geodesic = geodesic;
82
- if (polyline != null) {
83
- polyline.setGeodesic(geodesic);
84
- }
85
- }
86
-
87
- public void setLineCap(Cap cap) {
88
- this.lineCap = cap;
89
- if (polyline != null) {
90
- polyline.setStartCap(cap);
91
- polyline.setEndCap(cap);
92
- }
93
- this.applyPattern();
94
- }
95
-
96
- public void setLineDashPattern(ReadableArray patternValues) {
97
- this.patternValues = patternValues;
98
- this.applyPattern();
99
- }
100
-
101
- private void applyPattern() {
102
- if(patternValues == null) {
103
- return;
104
- }
105
- this.pattern = new ArrayList<>(patternValues.size());
106
- for (int i = 0; i < patternValues.size(); i++) {
107
- float patternValue = (float) patternValues.getDouble(i);
108
- boolean isGap = i % 2 != 0;
109
- if(isGap) {
110
- this.pattern.add(new Gap(patternValue));
111
- }else {
112
- PatternItem patternItem;
113
- boolean isLineCapRound = this.lineCap instanceof RoundCap;
114
- if(isLineCapRound) {
115
- patternItem = new Dot();
116
- }else {
117
- patternItem = new Dash(patternValue);
118
- }
119
- this.pattern.add(patternItem);
120
- }
121
- }
122
- if(polyline != null) {
123
- polyline.setPattern(this.pattern);
124
- }
125
- }
126
-
127
- public PolylineOptions getPolylineOptions() {
128
- if (polylineOptions == null) {
129
- polylineOptions = createPolylineOptions();
130
- }
131
- return polylineOptions;
132
- }
133
-
134
- private PolylineOptions createPolylineOptions() {
135
- PolylineOptions options = new PolylineOptions();
136
- options.addAll(coordinates);
137
- options.color(color);
138
- options.width(width);
139
- options.geodesic(geodesic);
140
- options.zIndex(zIndex);
141
- options.startCap(lineCap);
142
- options.endCap(lineCap);
143
- options.pattern(this.pattern);
144
- return options;
145
- }
146
-
147
- @Override
148
- public Object getFeature() {
149
- return polyline;
150
- }
151
-
152
- @Override
153
- public void addToMap(Object collection) {
154
- PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection;
155
- polyline = polylineCollection.addPolyline(getPolylineOptions());
156
- polyline.setClickable(this.tappable);
157
- }
158
-
159
- @Override
160
- public void removeFromMap(Object collection) {
161
- PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection;
162
- polylineCollection.remove(polyline);
163
- }
31
+ private PolylineOptions polylineOptions;
32
+ private Polyline polyline;
33
+
34
+ private List<LatLng> coordinates;
35
+ private int color;
36
+ private float width;
37
+ private boolean tappable;
38
+ private boolean geodesic;
39
+ private float zIndex;
40
+ private Cap lineCap = new RoundCap();
41
+ private ReadableArray patternValues;
42
+ private List<PatternItem> pattern;
43
+
44
+ public MapPolyline(Context context) {
45
+ super(context);
46
+ }
47
+
48
+ public void setCoordinates(ReadableArray coordinates) {
49
+ this.coordinates = new ArrayList<>(coordinates.size());
50
+ for (int i = 0; i < coordinates.size(); i++) {
51
+ ReadableMap coordinate = coordinates.getMap(i);
52
+ this.coordinates.add(i,
53
+ new LatLng(coordinate.getDouble("latitude"), coordinate.getDouble("longitude")));
54
+ }
55
+ if (polyline != null) {
56
+ polyline.setPoints(this.coordinates);
57
+ }
58
+ }
59
+
60
+ public void setColor(int color) {
61
+ this.color = color;
62
+ if (polyline != null) {
63
+ polyline.setColor(color);
64
+ }
65
+ }
66
+
67
+ public void setStrokeColors(ReadableArray strokeColors) {
68
+ List<StyleSpan> spans = new ArrayList<>();
69
+ for (int i = 0; i < strokeColors.size(); i++) {
70
+ StrokeStyle stroke;
71
+
72
+ if (i == 0) {
73
+ stroke = StrokeStyle.colorBuilder(strokeColors.getInt(i)).build();
74
+ } else {
75
+ stroke = StrokeStyle.gradientBuilder(strokeColors.getInt(i - 1), strokeColors.getInt(i)).build();
76
+ }
77
+ spans.add(new StyleSpan(stroke));
78
+ }
79
+
80
+ polyline.setSpans(spans);
81
+ }
82
+
83
+ public void setWidth(float width) {
84
+ this.width = width;
85
+ if (polyline != null) {
86
+ polyline.setWidth(width);
87
+ }
88
+ }
89
+
90
+ public void setZIndex(float zIndex) {
91
+ this.zIndex = zIndex;
92
+ if (polyline != null) {
93
+ polyline.setZIndex(zIndex);
94
+ }
95
+ }
96
+
97
+ public void setTappable(boolean tapabble) {
98
+ this.tappable = tapabble;
99
+ if (polyline != null) {
100
+ polyline.setClickable(tappable);
101
+ }
102
+ }
103
+
104
+ public void setGeodesic(boolean geodesic) {
105
+ this.geodesic = geodesic;
106
+ if (polyline != null) {
107
+ polyline.setGeodesic(geodesic);
108
+ }
109
+ }
110
+
111
+ public void setLineCap(Cap cap) {
112
+ this.lineCap = cap;
113
+ if (polyline != null) {
114
+ polyline.setStartCap(cap);
115
+ polyline.setEndCap(cap);
116
+ }
117
+ this.applyPattern();
118
+ }
119
+
120
+ public void setLineDashPattern(ReadableArray patternValues) {
121
+ this.patternValues = patternValues;
122
+ this.applyPattern();
123
+ }
124
+
125
+ private void applyPattern() {
126
+ if (patternValues == null) {
127
+ return;
128
+ }
129
+ this.pattern = new ArrayList<>(patternValues.size());
130
+ for (int i = 0; i < patternValues.size(); i++) {
131
+ float patternValue = (float) patternValues.getDouble(i);
132
+ boolean isGap = i % 2 != 0;
133
+ if (isGap) {
134
+ this.pattern.add(new Gap(patternValue));
135
+ } else {
136
+ PatternItem patternItem;
137
+ boolean isLineCapRound = this.lineCap instanceof RoundCap;
138
+ if (isLineCapRound) {
139
+ patternItem = new Dot();
140
+ } else {
141
+ patternItem = new Dash(patternValue);
142
+ }
143
+ this.pattern.add(patternItem);
144
+ }
145
+ }
146
+ if (polyline != null) {
147
+ polyline.setPattern(this.pattern);
148
+ }
149
+ }
150
+
151
+ public PolylineOptions getPolylineOptions() {
152
+ if (polylineOptions == null) {
153
+ polylineOptions = createPolylineOptions();
154
+ }
155
+ return polylineOptions;
156
+ }
157
+
158
+ private PolylineOptions createPolylineOptions() {
159
+ PolylineOptions options = new PolylineOptions();
160
+ options.addAll(coordinates);
161
+ options.color(color);
162
+ options.width(width);
163
+ options.geodesic(geodesic);
164
+ options.zIndex(zIndex);
165
+ options.startCap(lineCap);
166
+ options.endCap(lineCap);
167
+ options.pattern(this.pattern);
168
+ return options;
169
+ }
170
+
171
+ @Override
172
+ public Object getFeature() {
173
+ return polyline;
174
+ }
175
+
176
+ @Override
177
+ public void addToMap(Object collection) {
178
+ PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection;
179
+ polyline = polylineCollection.addPolyline(getPolylineOptions());
180
+ polyline.setClickable(this.tappable);
181
+ }
182
+
183
+ @Override
184
+ public void removeFromMap(Object collection) {
185
+ PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection;
186
+ polylineCollection.remove(polyline);
187
+ }
188
+
189
+ public void setLineCap(String lineCap) {
190
+ Cap cap;
191
+ switch (lineCap) {
192
+ case "round":
193
+ cap = new RoundCap();
194
+ break;
195
+ case "square":
196
+ cap = new SquareCap();
197
+ break;
198
+ case "butt":
199
+ default:
200
+ cap = new ButtCap();
201
+ break;
202
+ }
203
+ setLineCap(cap);
204
+ }
205
+
206
+ public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
207
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
208
+ builder.put(OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME));
209
+ return builder.build();
210
+ }
211
+
212
+ public void setLineJoin(String lineJoin) {
213
+ int type;
214
+ switch (lineJoin) {
215
+ case "round":
216
+ type = JointType.ROUND;
217
+ break;
218
+ case "bevel":
219
+ type = JointType.BEVEL;
220
+ break;
221
+ case "miter":
222
+ default:
223
+ type = JointType.DEFAULT;
224
+ break;
225
+ }
226
+ if (polyline != null) {
227
+ polyline.setJointType(type);
228
+ }
229
+ }
164
230
  }
@@ -74,22 +74,7 @@ public class MapPolylineManager extends ViewGroupManager<MapPolyline> {
74
74
 
75
75
  @ReactProp(name = "lineCap")
76
76
  public void setlineCap(MapPolyline view, String lineCap) {
77
- Cap cap = null;
78
- switch (lineCap) {
79
- case "butt":
80
- cap = new ButtCap();
81
- break;
82
- case "round":
83
- cap = new RoundCap();
84
- break;
85
- case "square":
86
- cap = new SquareCap();
87
- break;
88
- default:
89
- cap = new RoundCap();
90
- break;
91
- }
92
- view.setLineCap(cap);
77
+ view.setLineCap(lineCap);
93
78
  }
94
79
 
95
80
  @ReactProp(name = "lineDashPattern")