react-native-maps 1.21.0-alpha.12 → 1.21.0-alpha.121

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 (241) hide show
  1. package/android/build.gradle +77 -57
  2. package/android/gradlew +1 -2
  3. package/android/src/generated/RCTAppDependencyProvider.h +25 -0
  4. package/android/src/generated/RCTAppDependencyProvider.mm +55 -0
  5. package/android/src/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  6. package/android/src/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  7. package/android/src/generated/RCTThirdPartyComponentsProvider.h +16 -0
  8. package/android/src/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  9. package/android/src/generated/ReactAppDependencyProvider.podspec +34 -0
  10. package/android/src/generated/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  11. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
  12. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
  13. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
  14. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
  15. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
  16. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
  17. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +206 -0
  18. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +73 -0
  19. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
  20. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  21. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +46 -0
  22. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +23 -0
  23. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
  24. package/android/src/generated/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
  25. package/android/src/generated/jni/CMakeLists.txt +36 -0
  26. package/android/src/generated/jni/RNMapsSpecs-generated.cpp +68 -0
  27. package/android/src/generated/jni/RNMapsSpecs.h +31 -0
  28. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  29. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +31 -0
  30. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +977 -0
  31. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +846 -0
  32. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/Props.cpp +193 -0
  33. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/Props.h +1223 -0
  34. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  35. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  36. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +24 -0
  37. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +109 -0
  38. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  39. package/android/src/generated/jni/react/renderer/components/RNMapsSpecs/States.h +113 -0
  40. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  41. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  42. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  43. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +619 -0
  44. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  45. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  46. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +95 -0
  47. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  48. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  60. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  61. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  62. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  63. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  64. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  65. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  66. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  67. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  68. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  69. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  70. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  71. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  72. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  73. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  74. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  75. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +39 -3
  76. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  77. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  78. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  79. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  80. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  81. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  82. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +267 -151
  83. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  84. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  85. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  86. package/android/src/main/java/com/rnmaps/maps/MapView.java +1650 -1337
  87. package/ios/AirGoogleMaps/AIRGoogleMap.h +9 -10
  88. package/ios/AirGoogleMaps/AIRGoogleMap.m +109 -71
  89. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  90. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +10 -9
  91. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +14 -6
  92. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  93. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +2 -1
  94. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +30 -0
  95. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  96. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  97. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  98. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  99. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  100. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +2 -0
  101. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +126 -61
  102. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  103. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  104. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  105. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  106. package/ios/AirMaps/AIRMap.h +7 -7
  107. package/ios/AirMaps/AIRMap.m +227 -236
  108. package/ios/AirMaps/AIRMapManager.m +13 -7
  109. package/ios/AirMaps/AIRMapMarker.h +1 -0
  110. package/ios/AirMaps/AIRMapMarker.m +165 -103
  111. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  112. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
  113. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
  114. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  115. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
  116. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  117. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  118. package/ios/AirMaps/RNMapsAirModuleDelegate.h +2 -2
  119. package/ios/AirMaps/RNMapsDefines.h +0 -0
  120. package/ios/AirMaps/RNMapsMapView.mm +336 -299
  121. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  122. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  123. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  124. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  125. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  126. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  127. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  128. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  129. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  130. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  131. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  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 +24 -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 +44 -15
  152. package/src/AnimatedRegion.ts +169 -0
  153. package/src/Geojson.tsx +541 -0
  154. package/src/MapCallout.tsx +77 -0
  155. package/src/MapCalloutSubview.tsx +64 -0
  156. package/src/MapCircle.tsx +162 -0
  157. package/src/MapHeatmap.tsx +125 -0
  158. package/src/MapLocalTile.tsx +60 -0
  159. package/src/MapMarker.tsx +531 -0
  160. package/src/MapMarkerNativeComponent.ts +51 -0
  161. package/src/MapOverlay.tsx +156 -0
  162. package/src/MapPolygon.tsx +188 -0
  163. package/src/MapPolygon.types.ts +25 -0
  164. package/src/MapPolyline.tsx +215 -0
  165. package/src/MapUrlTile.tsx +169 -0
  166. package/src/MapView.tsx +1223 -0
  167. package/src/MapView.types.ts +212 -0
  168. package/src/MapView.web.ts +2 -0
  169. package/src/MapViewNativeComponent.ts +86 -0
  170. package/src/MapWMSTile.tsx +148 -0
  171. package/src/ProviderConstants.ts +2 -0
  172. package/src/createFabricMap.tsx +253 -0
  173. package/src/decorateMapComponent.ts +219 -0
  174. package/src/fixImageProp.ts +17 -0
  175. package/src/index.ts +52 -0
  176. package/src/sharedTypes.ts +101 -0
  177. package/src/specs/NativeAirMapsModule.ts +36 -0
  178. package/src/specs/NativeComponentCallout.ts +63 -0
  179. package/src/specs/NativeComponentCircle.ts +93 -0
  180. package/src/specs/NativeComponentGoogleMapView.ts +913 -0
  181. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  182. package/src/specs/NativeComponentMapView.ts +1091 -0
  183. package/src/specs/NativeComponentMarker.ts +326 -0
  184. package/src/specs/NativeComponentOverlay.ts +89 -0
  185. package/src/specs/NativeComponentPolyline.ts +124 -0
  186. package/lib/AnimatedRegion.d.ts +0 -19
  187. package/lib/AnimatedRegion.js +0 -134
  188. package/lib/Geojson.d.ts +0 -204
  189. package/lib/Geojson.js +0 -166
  190. package/lib/MapCallout.d.ts +0 -40
  191. package/lib/MapCallout.js +0 -51
  192. package/lib/MapCalloutSubview.d.ts +0 -34
  193. package/lib/MapCalloutSubview.js +0 -48
  194. package/lib/MapCircle.d.ts +0 -117
  195. package/lib/MapCircle.js +0 -53
  196. package/lib/MapHeatmap.d.ts +0 -78
  197. package/lib/MapHeatmap.js +0 -59
  198. package/lib/MapLocalTile.d.ts +0 -35
  199. package/lib/MapLocalTile.js +0 -44
  200. package/lib/MapMarker.d.ts +0 -309
  201. package/lib/MapMarker.js +0 -116
  202. package/lib/MapMarkerNativeComponent.d.ts +0 -15
  203. package/lib/MapMarkerNativeComponent.js +0 -17
  204. package/lib/MapOverlay.d.ts +0 -87
  205. package/lib/MapOverlay.js +0 -63
  206. package/lib/MapPolygon.d.ts +0 -140
  207. package/lib/MapPolygon.js +0 -53
  208. package/lib/MapPolygon.types.d.ts +0 -18
  209. package/lib/MapPolygon.types.js +0 -2
  210. package/lib/MapPolyline.d.ts +0 -156
  211. package/lib/MapPolyline.js +0 -53
  212. package/lib/MapUrlTile.d.ts +0 -134
  213. package/lib/MapUrlTile.js +0 -44
  214. package/lib/MapView.d.ts +0 -715
  215. package/lib/MapView.js +0 -447
  216. package/lib/MapView.types.d.ts +0 -161
  217. package/lib/MapView.types.js +0 -2
  218. package/lib/MapView.web.d.ts +0 -1
  219. package/lib/MapView.web.js +0 -9
  220. package/lib/MapViewNativeComponent.d.ts +0 -18
  221. package/lib/MapViewNativeComponent.js +0 -19
  222. package/lib/MapWMSTile.d.ts +0 -116
  223. package/lib/MapWMSTile.js +0 -44
  224. package/lib/ProviderConstants.d.ts +0 -2
  225. package/lib/ProviderConstants.js +0 -5
  226. package/lib/createFabricMap.d.ts +0 -23
  227. package/lib/createFabricMap.js +0 -175
  228. package/lib/decorateMapComponent.d.ts +0 -36
  229. package/lib/decorateMapComponent.js +0 -80
  230. package/lib/index.d.ts +0 -38
  231. package/lib/index.js +0 -81
  232. package/lib/sharedTypes.d.ts +0 -81
  233. package/lib/sharedTypes.js +0 -2
  234. package/lib/sharedTypesInternal.js +0 -2
  235. package/lib/specs/NativeAirMapsModule.d.ts +0 -31
  236. package/lib/specs/NativeAirMapsModule.js +0 -4
  237. package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
  238. package/lib/specs/NativeComponentGoogleMapView.js +0 -21
  239. package/lib/specs/NativeComponentMapView.d.ts +0 -855
  240. package/lib/specs/NativeComponentMapView.js +0 -21
  241. /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
@@ -27,18 +27,17 @@
27
27
  @property (nonatomic, assign) NSString *customMapStyleString;
28
28
  @property (nonatomic, assign) UIEdgeInsets mapPadding;
29
29
  @property (nonatomic, assign) NSString *paddingAdjustmentBehaviorString;
30
- @property (nonatomic, copy) RCTBubblingEventBlock onMapReady;
31
- @property (nonatomic, copy) RCTBubblingEventBlock onMapLoaded;
32
- @property (nonatomic, copy) RCTBubblingEventBlock onKmlReady;
30
+ @property (nonatomic, copy) RCTDirectEventBlock onMapReady;
31
+ @property (nonatomic, copy) RCTDirectEventBlock onMapLoaded;
32
+ @property (nonatomic, copy) RCTDirectEventBlock onKmlReady;
33
33
  @property (nonatomic, copy) RCTBubblingEventBlock onPress;
34
34
  @property (nonatomic, copy) RCTBubblingEventBlock onLongPress;
35
- @property (nonatomic, copy) RCTBubblingEventBlock onPanDrag;
36
- @property (nonatomic, copy) RCTBubblingEventBlock onUserLocationChange;
37
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerPress;
38
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerSelect;
39
- @property (nonatomic, copy) RCTBubblingEventBlock onMarkerDeselect;
40
- @property (nonatomic, copy) RCTBubblingEventBlock onChange;
41
- @property (nonatomic, copy) RCTBubblingEventBlock onPoiClick;
35
+ @property (nonatomic, copy) RCTDirectEventBlock onPanDrag;
36
+ @property (nonatomic, copy) RCTDirectEventBlock onUserLocationChange;
37
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerPress;
38
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerSelect;
39
+ @property (nonatomic, copy) RCTDirectEventBlock onMarkerDeselect;
40
+ @property (nonatomic, copy) RCTDirectEventBlock onPoiClick;
42
41
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeStart;
43
42
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChange;
44
43
  @property (nonatomic, copy) RCTDirectEventBlock onRegionChangeComplete;
@@ -69,6 +69,7 @@ id regionAsJSON(MKCoordinateRegion region) {
69
69
  BOOL _didPrepareMap;
70
70
  BOOL _didCallOnMapReady;
71
71
  BOOL _zoomTapEnabled;
72
+ BOOL _isAnimating;
72
73
  NSString* _googleMapId;
73
74
  }
74
75
 
@@ -243,8 +244,13 @@ id regionAsJSON(MKCoordinateRegion region) {
243
244
  [self.markers addObject:marker];
244
245
  } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
245
246
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
246
- polygon.polygon.map = self;
247
+ [polygon didInsertInMap:self];
247
248
  [self.polygons addObject:polygon];
249
+
250
+ } else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]){
251
+ // RNMapsGooglePolygonView *polygon = (RNMapsGooglePolygonView*)subview;
252
+ // [polygon didInsertInMap:self];
253
+ [self.polygons addObject:subview];
248
254
  } else if ([subview isKindOfClass:[AIRGoogleMapPolyline class]]) {
249
255
  AIRGoogleMapPolyline *polyline = (AIRGoogleMapPolyline*)subview;
250
256
  polyline.polyline.map = self;
@@ -289,7 +295,9 @@ id regionAsJSON(MKCoordinateRegion region) {
289
295
  AIRGoogleMapMarker *marker = (AIRGoogleMapMarker*)subview;
290
296
  marker.realMarker.map = nil;
291
297
  [self.markers removeObject:marker];
292
- } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
298
+ } else if ([NSStringFromClass([subview class]) isEqualToString:@"RNMapsGooglePolygonView"]) {
299
+ [self.polygons removeObject:subview];
300
+ } else if ([subview isKindOfClass:[AIRGoogleMapPolygon class]]) {
293
301
  AIRGoogleMapPolygon *polygon = (AIRGoogleMapPolygon*)subview;
294
302
  polygon.polygon.map = nil;
295
303
  [self.polygons removeObject:polygon];
@@ -354,6 +362,19 @@ id regionAsJSON(MKCoordinateRegion region) {
354
362
  ];
355
363
  }
356
364
 
365
+ - (NSDictionary *) getCameraDic {
366
+ GMSCameraPosition *camera = [self camera];
367
+ return @{
368
+ @"center": @{
369
+ @"latitude": @(camera.target.latitude),
370
+ @"longitude": @(camera.target.longitude),
371
+ },
372
+ @"pitch": @(camera.viewingAngle),
373
+ @"heading": @(camera.bearing),
374
+ @"zoom": @(camera.zoom),
375
+ };
376
+ }
377
+
357
378
  - (void)layoutSubviews {
358
379
  [super layoutSubviews];
359
380
  if(_didLayoutSubviews) return;
@@ -390,7 +411,7 @@ id regionAsJSON(MKCoordinateRegion region) {
390
411
  }
391
412
 
392
413
  - (void)setRegion:(MKCoordinateRegion)region {
393
- // TODO: The JS component is repeatedly setting region unnecessarily. We might want to deal with that in here.
414
+ if (_isAnimating || !CLLocationCoordinate2DIsValid(region.center)) return;
394
415
  _region = region;
395
416
  if(_didLayoutSubviews) {
396
417
  self.camera = [AIRGoogleMap makeGMSCameraPositionFromMap:self andMKCoordinateRegion:region];
@@ -410,6 +431,7 @@ id regionAsJSON(MKCoordinateRegion region) {
410
431
  }
411
432
 
412
433
  - (void)setCameraProp:(GMSCameraPosition*)camera {
434
+ if (_isAnimating || !CLLocationCoordinate2DIsValid([camera target])) return;
413
435
  _initialCamera = camera;
414
436
  if(_didLayoutSubviews) {
415
437
  self.camera = camera;
@@ -491,6 +513,7 @@ id regionAsJSON(MKCoordinateRegion region) {
491
513
  }
492
514
 
493
515
  - (void)willMove:(BOOL)gesture {
516
+ _isAnimating = YES;
494
517
  id event = @{@"isGesture": [NSNumber numberWithBool:gesture]};
495
518
  if (self.onRegionChangeStart) self.onRegionChangeStart(event);
496
519
  }
@@ -501,7 +524,7 @@ id regionAsJSON(MKCoordinateRegion region) {
501
524
  @"isGesture": [NSNumber numberWithBool:isGesture],
502
525
  };
503
526
 
504
- if (self.onChange) self.onChange(event);
527
+ if (self.onRegionChange) self.onRegionChange(event);
505
528
  }
506
529
 
507
530
  - (void)didTapPOIWithPlaceID:(NSString *)placeID
@@ -523,7 +546,8 @@ id regionAsJSON(MKCoordinateRegion region) {
523
546
  @"region": regionAsJSON([AIRGoogleMap makeGMSCameraPositionFromMap:self andGMSCameraPosition:position]),
524
547
  @"isGesture": [NSNumber numberWithBool:isGesture],
525
548
  };
526
- if (self.onChange) self.onChange(event); // complete
549
+ if (self.onRegionChangeComplete) self.onRegionChangeComplete(event); // complete
550
+ _isAnimating = NO;
527
551
  }
528
552
 
529
553
  - (void)setMapPadding:(UIEdgeInsets)mapPadding {
@@ -772,8 +796,7 @@ id regionAsJSON(MKCoordinateRegion region) {
772
796
  };
773
797
  }
774
798
 
775
- -(void) takeSnapshotWithConfig:(NSDictionary *)config callback:(RCTPromiseResolveBlock) callback
776
- {
799
+ -(void) takeSnapshotWithConfig:(NSDictionary *)config success:(RCTPromiseResolveBlock)success error:(RCTPromiseRejectBlock)error {
777
800
  /* unused
778
801
  NSNumber *width = [config objectForKey:@"width"];
779
802
  NSNumber *height = [config objectForKey:@"height"];
@@ -782,8 +805,9 @@ id regionAsJSON(MKCoordinateRegion region) {
782
805
 
783
806
  NSString *format = [config objectForKey:@"format"];
784
807
  NSString *result = [config objectForKey:@"result"];
785
- NSString *filePath = [config objectForKey:@"filePath"];
786
-
808
+ NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970];
809
+ NSString *pathComponent = [NSString stringWithFormat:@"Documents/snapshot-%.20lf.%@", timeStamp, format];
810
+ NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent: pathComponent];
787
811
 
788
812
  // TODO: currently we are ignoring width, height, region
789
813
 
@@ -801,9 +825,9 @@ id regionAsJSON(MKCoordinateRegion region) {
801
825
 
802
826
  if ([result isEqualToString:@"file"]) {
803
827
  [data writeToFile:filePath atomically:YES];
804
- callback(filePath);
828
+ success(filePath);
805
829
  } else if ([result isEqualToString:@"base64"]) {
806
- callback([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
830
+ success([data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]);
807
831
  }
808
832
 
809
833
  UIGraphicsEndImageContext();
@@ -1044,7 +1068,7 @@ id regionAsJSON(MKCoordinateRegion region) {
1044
1068
  }
1045
1069
 
1046
1070
  + (NSString *)GetIconUrl:(GMUPlacemark *) marker parser:(GMUKMLParser *) parser {
1047
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1071
+ #if HAVE_GOOGLE_MAPS_UTILS
1048
1072
  if (marker.style.styleID != nil) {
1049
1073
  for (GMUStyle *style in parser.styles) {
1050
1074
  if (style.styleID == marker.style.styleID) {
@@ -1063,8 +1087,53 @@ id regionAsJSON(MKCoordinateRegion region) {
1063
1087
  return _kmlSrc;
1064
1088
  }
1065
1089
 
1090
+ - (void) setKMLData:(NSData *) urlData {
1091
+ GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
1092
+ [parser parse];
1093
+
1094
+ NSUInteger index = 0;
1095
+ NSMutableArray *markers = [[NSMutableArray alloc]init];
1096
+
1097
+ for (GMUPlacemark *place in parser.placemarks) {
1098
+
1099
+ CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
1100
+
1101
+ AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
1102
+ if (!marker.bridge) {
1103
+ marker.bridge = _bridge;
1104
+ }
1105
+ marker.identifier = place.title;
1106
+ marker.coordinate = location;
1107
+ marker.title = place.title;
1108
+ marker.subtitle = place.snippet;
1109
+ marker.pinColor = place.style.fillColor;
1110
+ marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
1111
+ marker.layer.backgroundColor = [UIColor clearColor].CGColor;
1112
+ marker.layer.position = CGPointZero;
1113
+
1114
+ [self insertReactSubview:(UIView *) marker atIndex:index];
1115
+
1116
+ [markers addObject:@{@"id": marker.identifier,
1117
+ @"title": marker.title,
1118
+ @"description": marker.subtitle,
1119
+ @"coordinate": @{
1120
+ @"latitude": @(location.latitude),
1121
+ @"longitude": @(location.longitude)
1122
+ }
1123
+ }];
1124
+
1125
+ index++;
1126
+ }
1127
+
1128
+ id event = @{@"markers": markers};
1129
+ if (self.onKmlReady) self.onKmlReady(event);
1130
+ #else
1131
+ REQUIRES_GOOGLE_MAPS_UTILS();
1132
+ #endif
1133
+ }
1134
+
1066
1135
  - (void)setKmlSrc:(NSString *)kmlUrl {
1067
- #ifdef HAVE_GOOGLE_MAPS_UTILS
1136
+ #if HAVE_GOOGLE_MAPS_UTILS
1068
1137
 
1069
1138
  _kmlSrc = kmlUrl;
1070
1139
 
@@ -1072,53 +1141,28 @@ id regionAsJSON(MKCoordinateRegion region) {
1072
1141
  NSData *urlData = nil;
1073
1142
 
1074
1143
  if ([url isFileURL]) {
1075
- urlData = [NSData dataWithContentsOfURL:url];
1144
+ [self setKMLData:[NSData dataWithContentsOfURL:url]];
1076
1145
  } else {
1077
- urlData = [[NSFileManager defaultManager] contentsAtPath:kmlUrl];
1146
+ __weak AIRGoogleMap *weakSelf = self;
1147
+
1148
+ NSURLSession *session = [NSURLSession sharedSession];
1149
+ NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url
1150
+ completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
1151
+ if (error) {
1152
+ NSLog(@"Error fetching data: %@", error.localizedDescription);
1153
+ return;
1154
+ } else {
1155
+ dispatch_async(dispatch_get_main_queue(), ^{
1156
+ AIRGoogleMap *strongSelf = weakSelf;
1157
+ [strongSelf setKMLData:data];
1158
+ });
1159
+
1160
+ }
1161
+ }];
1162
+ [dataTask resume];
1078
1163
  }
1079
1164
 
1080
- GMUKMLParser *parser = [[GMUKMLParser alloc] initWithData:urlData];
1081
- [parser parse];
1082
1165
 
1083
- NSUInteger index = 0;
1084
- NSMutableArray *markers = [[NSMutableArray alloc]init];
1085
-
1086
- for (GMUPlacemark *place in parser.placemarks) {
1087
-
1088
- CLLocationCoordinate2D location =((GMUPoint *) place.geometry).coordinate;
1089
-
1090
- AIRGoogleMapMarker *marker = (AIRGoogleMapMarker *)[[AIRGoogleMapMarkerManager alloc] view];
1091
- if (!marker.bridge) {
1092
- marker.bridge = _bridge;
1093
- }
1094
- marker.identifier = place.title;
1095
- marker.coordinate = location;
1096
- marker.title = place.title;
1097
- marker.subtitle = place.snippet;
1098
- marker.pinColor = place.style.fillColor;
1099
- marker.imageSrc = [AIRGoogleMap GetIconUrl:place parser:parser];
1100
- marker.layer.backgroundColor = [UIColor clearColor].CGColor;
1101
- marker.layer.position = CGPointZero;
1102
-
1103
- [self insertReactSubview:(UIView *) marker atIndex:index];
1104
-
1105
- [markers addObject:@{@"id": marker.identifier,
1106
- @"title": marker.title,
1107
- @"description": marker.subtitle,
1108
- @"coordinate": @{
1109
- @"latitude": @(location.latitude),
1110
- @"longitude": @(location.longitude)
1111
- }
1112
- }];
1113
-
1114
- index++;
1115
- }
1116
-
1117
- id event = @{@"markers": markers};
1118
- if (self.onKmlReady) self.onKmlReady(event);
1119
- #else
1120
- REQUIRES_GOOGLE_MAPS_UTILS();
1121
- #endif
1122
1166
  }
1123
1167
 
1124
1168
 
@@ -1128,11 +1172,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1128
1172
  return;
1129
1173
  }
1130
1174
  self.onIndoorBuildingFocused(@{
1131
- @"IndoorBuilding": @{
1132
- @"activeLevelIndex": @0,
1133
- @"underground": @false,
1134
- @"levels": [[NSMutableArray alloc]init]
1135
- }
1175
+ @"activeLevelIndex": @0,
1176
+ @"underground": @false,
1177
+ @"levels": [[NSMutableArray alloc]init]
1136
1178
  });
1137
1179
  }
1138
1180
  NSInteger i = 0;
@@ -1149,11 +1191,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1149
1191
  return;
1150
1192
  }
1151
1193
  self.onIndoorBuildingFocused(@{
1152
- @"IndoorBuilding": @{
1153
- @"activeLevelIndex": @(building.defaultLevelIndex),
1154
- @"underground": @(building.underground),
1155
- @"levels": arrayLevels
1156
- }
1194
+ @"activeLevelIndex": @(building.defaultLevelIndex),
1195
+ @"underground": @(building.underground),
1196
+ @"levels": arrayLevels
1157
1197
  });
1158
1198
  }
1159
1199
 
@@ -1169,11 +1209,9 @@ id regionAsJSON(MKCoordinateRegion region) {
1169
1209
  i++;
1170
1210
  }
1171
1211
  self.onIndoorLevelActivated(@{
1172
- @"IndoorLevel": @{
1173
- @"activeLevelIndex": @(i),
1174
- @"name": level.name,
1175
- @"shortName": level.shortName
1176
- }
1212
+ @"activeLevelIndex": @(i),
1213
+ @"name": level.name,
1214
+ @"shortName": level.shortName
1177
1215
  });
1178
1216
  }
1179
1217
  // do nothing, passed as options on initialization
@@ -25,20 +25,32 @@
25
25
  }
26
26
  return self;
27
27
  }
28
+ - (void) prepare
29
+ {
30
+ if(_didMoveToWindow) return;
31
+ _didMoveToWindow = true;
32
+ if(_fillColor) {
33
+ _circle.fillColor = _fillColor;
34
+ }
35
+ if(_strokeColor) {
36
+ _circle.strokeColor = _strokeColor;
37
+ }
38
+ if(_strokeWidth) {
39
+ _circle.strokeWidth = _strokeWidth;
40
+ }
41
+ if (_zIndex) {
42
+ _circle.zIndex = _zIndex;
43
+ }
44
+ }
45
+ - (void) didMoveToSuperview
46
+ {
47
+ [super didMoveToSuperview];
48
+ [self prepare];
49
+ }
28
50
 
29
51
  - (void)didMoveToWindow {
30
52
  [super didMoveToWindow];
31
- if(_didMoveToWindow) return;
32
- _didMoveToWindow = true;
33
- if(_fillColor) {
34
- _circle.fillColor = _fillColor;
35
- }
36
- if(_strokeColor) {
37
- _circle.strokeColor = _strokeColor;
38
- }
39
- if(_strokeWidth) {
40
- _circle.strokeWidth = _strokeWidth;
41
- }
53
+ [self prepare];
42
54
  }
43
55
 
44
56
  - (void)setRadius:(double)radius
@@ -97,14 +97,13 @@ RCT_EXPORT_VIEW_PROPERTY(showsIndoorLevelPicker, BOOL)
97
97
  RCT_EXPORT_VIEW_PROPERTY(customMapStyleString, NSString)
98
98
  RCT_EXPORT_VIEW_PROPERTY(mapPadding, UIEdgeInsets)
99
99
  RCT_REMAP_VIEW_PROPERTY(paddingAdjustmentBehavior, paddingAdjustmentBehaviorString, NSString)
100
- RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTBubblingEventBlock)
101
- RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTBubblingEventBlock)
102
- RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTBubblingEventBlock)
100
+ RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTDirectEventBlock)
101
+ RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTDirectEventBlock)
102
+ RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTDirectEventBlock)
103
103
  RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
104
104
  RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
105
- RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTBubblingEventBlock)
106
- RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTBubblingEventBlock)
107
- RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock)
105
+ RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTDirectEventBlock)
106
+ RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTDirectEventBlock)
108
107
  RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
109
108
  RCT_EXPORT_VIEW_PROPERTY(onMarkerSelect, RCTDirectEventBlock)
110
109
  RCT_EXPORT_VIEW_PROPERTY(onMarkerDeselect, RCTDirectEventBlock)
@@ -266,9 +265,11 @@ RCT_EXPORT_METHOD(takeSnapshot:(nonnull NSNumber *)reactTag
266
265
  } else {
267
266
  AIRGoogleMap *mapView = (AIRGoogleMap *)view;
268
267
  NSMutableDictionary* config = [NSMutableDictionary new];
269
-
270
- [mapView takeSnapshotWithConfig:config callback:callback];
271
-
268
+
269
+ [mapView takeSnapshotWithConfig:config success:callback error:^(NSString *code, NSString *message, NSError *error) {
270
+ callback(@[error]);
271
+ }];
272
+
272
273
  [config setObject:width forKey:@"width"];
273
274
  [config setObject:height forKey:@"height"];
274
275
  [config setObject:format forKey:@"format"];
@@ -29,8 +29,8 @@ CGRect unionRect(CGRect a, CGRect b) {
29
29
  @implementation AIRGoogleMapMarker {
30
30
  RCTImageLoaderCancellationBlock _reloadImageCancellationBlock;
31
31
  RCTBubblingEventBlock _onPress;
32
- RCTBubblingEventBlock _onSelect;
33
- RCTBubblingEventBlock _onDeselect;
32
+ RCTDirectEventBlock _onSelect;
33
+ RCTDirectEventBlock _onDeselect;
34
34
  __weak UIImageView *_iconImageView;
35
35
  UIView *_iconView;
36
36
  UIColor *_pinColor;
@@ -140,6 +140,9 @@ CGRect unionRect(CGRect a, CGRect b) {
140
140
  if (_onPress){
141
141
  [_realMarker setOnPress:_onPress];
142
142
  }
143
+ if (_zIndex){
144
+ [_realMarker setZIndex:_zIndex];
145
+ }
143
146
  [_realMarker setMap:map];
144
147
  }
145
148
 
@@ -359,6 +362,7 @@ CGRect unionRect(CGRect a, CGRect b) {
359
362
  _iconImageView = empyImageView;
360
363
  [self iconViewInsertSubview:_iconImageView atIndex:0];
361
364
  }
365
+ __weak AIRGoogleMapMarker* weakSelf = self;
362
366
 
363
367
  _reloadImageCancellationBlock = [[_bridge moduleForName:@"ImageLoader"] loadImageWithURLRequest:[RCTConvert NSURLRequest:_imageSrc]
364
368
  size:self.bounds.size
@@ -372,10 +376,12 @@ CGRect unionRect(CGRect a, CGRect b) {
372
376
  // TODO(lmr): do something with the error?
373
377
  NSLog(@"%@", error);
374
378
  }
379
+
375
380
  dispatch_async(dispatch_get_main_queue(), ^{
381
+ __strong AIRGoogleMapMarker* strongSelf = weakSelf;
376
382
 
377
383
  // TODO(gil): This way allows different image sizes
378
- if (self->_iconImageView) [self->_iconImageView removeFromSuperview];
384
+ if (strongSelf->_iconImageView) [strongSelf->_iconImageView removeFromSuperview];
379
385
 
380
386
  // ... but this way is more efficient?
381
387
  // if (_iconImageView) {
@@ -399,10 +405,12 @@ CGRect unionRect(CGRect a, CGRect b) {
399
405
  // when the image loads IF the image is larger than the UIView.
400
406
  // Shouldn't required images have size info automatically via RN?
401
407
  CGRect selfBounds = unionRect(bounds, self.bounds);
402
- [self setFrame:selfBounds];
408
+ [strongSelf setFrame:selfBounds];
403
409
 
404
- self->_iconImageView = imageView;
405
- [self iconViewInsertSubview:imageView atIndex:0];
410
+ strongSelf->_iconImageView = imageView;
411
+ [strongSelf iconViewInsertSubview:imageView atIndex:0];
412
+ [strongSelf layoutSubviews];
413
+ [strongSelf.realMarker setIconView:strongSelf.iconView];
406
414
  });
407
415
  }];
408
416
  }
@@ -86,7 +86,7 @@ RCT_EXPORT_METHOD(redrawCallout:(nonnull NSNumber *)reactTag)
86
86
  RCTLogError(@"Invalid view returned from registry, expecting AIRMap, got: %@", view);
87
87
  } else {
88
88
  AIRGoogleMapMarker* marker = (AIRGoogleMapMarker *) view;
89
-
89
+
90
90
  [NSTimer scheduledTimerWithTimeInterval:0.0
91
91
  target:[NSBlockOperation blockOperationWithBlock:^{
92
92
  [marker hideCalloutView];
@@ -10,6 +10,7 @@
10
10
  #import <React/RCTBridge.h>
11
11
  #import "AIRGMSPolygon.h"
12
12
  #import "AIRGoogleMapCoordinate.h"
13
+ #import "AIRGoogleMap.h"
13
14
 
14
15
  @interface AIRGoogleMapPolygon : UIView
15
16
 
@@ -26,7 +27,7 @@
26
27
  @property (nonatomic, assign) BOOL geodesic;
27
28
  @property (nonatomic, assign) int zIndex;
28
29
  @property (nonatomic, assign) BOOL tappable;
29
-
30
+ - (void) didInsertInMap:(AIRGoogleMap *) map;
30
31
  @end
31
32
 
32
33
  #endif
@@ -9,6 +9,7 @@
9
9
  #import "AIRGoogleMapPolygon.h"
10
10
  #import "AIRGMSPolygon.h"
11
11
  #import <GoogleMaps/GoogleMaps.h>
12
+ #import "AIRGoogleMap.h"
12
13
 
13
14
  @implementation AIRGoogleMapPolygon
14
15
  {
@@ -41,6 +42,35 @@
41
42
  _polygon.strokeWidth = _strokeWidth;
42
43
  }
43
44
  }
45
+ - (void) didInsertInMap:(AIRGoogleMap *) map
46
+ {
47
+ _polygon = [AIRGMSPolygon new];
48
+
49
+ if (_identifier){
50
+ [_polygon setIdentifier:_identifier];
51
+ }
52
+
53
+ [_polygon setTappable:_tappable];
54
+ if (_strokeColor){
55
+ _polygon.strokeColor = _strokeColor;
56
+ }
57
+ if (_fillColor){
58
+ _polygon.fillColor = _fillColor;
59
+ }
60
+ if (_strokeWidth){
61
+ _polygon.strokeWidth = _strokeWidth;
62
+ }
63
+ if (_coordinates){
64
+ [self setCoordinates:_coordinates];
65
+ }
66
+ if (_holes){
67
+ [self setHoles:_holes];
68
+ }
69
+ if (_zIndex){
70
+ _polygon.zIndex = _zIndex;
71
+ }
72
+ [_polygon setMap:map];
73
+ }
44
74
 
45
75
  - (void)setCoordinates:(NSArray<AIRGoogleMapCoordinate *> *)coordinates
46
76
  {
@@ -25,7 +25,6 @@
25
25
  @property (nonatomic, strong) UIColor *strokeColor;
26
26
  @property (nonatomic, strong) NSArray<UIColor *> *strokeColors;
27
27
  @property (nonatomic, assign) double strokeWidth;
28
- @property (nonatomic, assign) UIColor *fillColor;
29
28
  @property (nonatomic, strong) NSArray<NSNumber *> *lineDashPattern;
30
29
  @property (nonatomic, assign) BOOL geodesic;
31
30
  @property (nonatomic, assign) NSString *title;
@@ -19,7 +19,6 @@
19
19
  {
20
20
  if (self = [super init]) {
21
21
  _polyline = [[AIRGMSPolyline alloc] init];
22
- _polyline.spans = @[[GMSStyleSpan spanWithColor:_strokeColor]];
23
22
  _polyline.strokeColor = _strokeColor;
24
23
  }
25
24
  return self;
@@ -79,12 +78,6 @@
79
78
  _polyline.strokeWidth = strokeWidth;
80
79
  }
81
80
 
82
- -(void)setFillColor:(UIColor *)fillColor
83
- {
84
- _fillColor = fillColor;
85
- _polyline.spans = @[[GMSStyleSpan spanWithColor:fillColor]];
86
- }
87
-
88
81
  - (void)setLineDashPattern:(NSArray<NSNumber *> *)lineDashPattern {
89
82
  _lineDashPattern = lineDashPattern;
90
83
  [self configureStyleSpansIfNeeded];
@@ -28,11 +28,11 @@
28
28
  NSInteger *maximumZ = self.maximumZ;
29
29
  NSInteger *minimumZ = self.minimumZ;
30
30
  GMSTileURLConstructor urls = ^NSURL* _Nullable (NSUInteger x, NSUInteger y, NSUInteger zoom) {
31
-
31
+
32
32
  if (self.flipY == YES) {
33
33
  y = (1 << zoom) - y - 1;
34
34
  }
35
-
35
+
36
36
  NSString *url = urlTemplate;
37
37
  url = [url stringByReplacingOccurrencesOfString:@"{x}" withString:[NSString stringWithFormat: @"%ld", (long)x]];
38
38
  url = [url stringByReplacingOccurrencesOfString:@"{y}" withString:[NSString stringWithFormat: @"%ld", (long)y]];
@@ -13,7 +13,7 @@
13
13
 
14
14
  @interface WMSTileOverlay : GMSSyncTileLayer
15
15
  @property (nonatomic) double MapX,MapY,FULL;
16
- @property (nonatomic, strong) NSString *template;
16
+ @property (nonatomic, assign) NSString *urlTemplate;
17
17
  @property (nonatomic, assign) NSInteger maximumZ;
18
18
  @property (nonatomic, assign) NSInteger minimumZ;
19
19
  @end
@@ -62,7 +62,7 @@
62
62
  {
63
63
  _urlTemplate = urlTemplate;
64
64
  WMSTileOverlay *tile = [[WMSTileOverlay alloc] init];
65
- [tile setTemplate:urlTemplate];
65
+ [tile setUrlTemplate:urlTemplate];
66
66
  [tile setMaximumZ: _maximumZ];
67
67
  [tile setMinimumZ: _minimumZ];
68
68
  [tile setOpacity: _opacity];
@@ -91,9 +91,9 @@
91
91
  [NSNumber numberWithDouble:_MapX + (double)(x+1) * tile ],
92
92
  [NSNumber numberWithDouble:_MapY - (double)y * tile ],
93
93
  nil];
94
-
94
+
95
95
  return result;
96
-
96
+
97
97
  }
98
98
 
99
99
  - (UIImage *)tileForX:(NSUInteger)x y:(NSUInteger)y zoom:(NSUInteger)zoom
@@ -107,7 +107,7 @@
107
107
  return nil;
108
108
  }
109
109
  NSArray *bb = [self getBoundBox:x yAxis:y zoom:zoom];
110
- NSMutableString *url = [self.template mutableCopy];
110
+ NSMutableString *url = [self.urlTemplate mutableCopy];
111
111
  [url replaceOccurrencesOfString: @"{minX}" withString:[NSString stringWithFormat:@"%@", bb[0]] options:0 range:NSMakeRange(0, url.length)];
112
112
  [url replaceOccurrencesOfString: @"{minY}" withString:[NSString stringWithFormat:@"%@", bb[1]] options:0 range:NSMakeRange(0, url.length)];
113
113
  [url replaceOccurrencesOfString: @"{maxX}" withString:[NSString stringWithFormat:@"%@", bb[2]] options:0 range:NSMakeRange(0, url.length)];
@@ -33,6 +33,8 @@
33
33
 
34
34
  + (AIRGoogleMapCoordinate *)AIRGoogleMapCoordinate:(id)json
35
35
  {
36
+ // empty coordinates
37
+ if ([json isKindOfClass:[NSArray class]] && [json count] == 0) return nil;
36
38
  AIRGoogleMapCoordinate *coord = [AIRGoogleMapCoordinate new];
37
39
  coord.coordinate = [self CLLocationCoordinate2D:json];
38
40
  return coord;