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

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 (258) hide show
  1. package/android/build.gradle +73 -53
  2. package/android/gradlew +1 -2
  3. package/android/src/main/RCTAppDependencyProvider.h +25 -0
  4. package/android/src/main/RCTAppDependencyProvider.mm +55 -0
  5. package/android/src/main/RCTModulesConformingToProtocolsProvider.h +18 -0
  6. package/android/src/main/RCTModulesConformingToProtocolsProvider.mm +33 -0
  7. package/android/src/main/RCTThirdPartyComponentsProvider.h +16 -0
  8. package/android/src/main/RCTThirdPartyComponentsProvider.mm +28 -0
  9. package/android/src/main/ReactAppDependencyProvider.podspec +34 -0
  10. package/android/src/main/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  11. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerDelegate.java +35 -0
  12. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCalloutManagerInterface.java +17 -0
  13. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerDelegate.java +49 -0
  14. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsCircleManagerInterface.java +23 -0
  15. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerDelegate.java +49 -0
  16. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsGooglePolygonManagerInterface.java +23 -0
  17. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +209 -0
  18. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +74 -0
  19. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +104 -0
  20. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  21. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerDelegate.java +45 -0
  22. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsOverlayManagerInterface.java +22 -0
  23. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerDelegate.java +58 -0
  24. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsPolylineManagerInterface.java +26 -0
  25. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerDelegate.java +62 -0
  26. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsUrlTileManagerInterface.java +27 -0
  27. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerDelegate.java +56 -0
  28. package/android/src/main/java/com/facebook/react/viewmanagers/RNMapsWMSTileManagerInterface.java +25 -0
  29. package/android/src/main/java/com/rnmaps/fabric/CalloutManager.java +77 -0
  30. package/android/src/main/java/com/rnmaps/fabric/CircleManager.java +94 -0
  31. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  32. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +624 -0
  33. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +258 -0
  34. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +235 -2
  35. package/android/src/main/java/com/rnmaps/fabric/OverlayManager.java +101 -0
  36. package/android/src/main/java/com/rnmaps/fabric/PolygonManager.java +89 -0
  37. package/android/src/main/java/com/rnmaps/fabric/PolylineManager.java +121 -0
  38. package/android/src/main/java/com/rnmaps/fabric/UrlTileManager.java +124 -0
  39. package/android/src/main/java/com/rnmaps/fabric/WMSTileManager.java +114 -0
  40. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  41. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  42. package/android/src/main/java/com/rnmaps/fabric/event/OnDoublePressEvent.java +27 -0
  43. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  45. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  46. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorBuildingFocusedEvent.java +28 -0
  47. package/android/src/main/java/com/rnmaps/fabric/event/OnIndoorLevelActivatedEvent.java +28 -0
  48. package/android/src/main/java/com/rnmaps/fabric/event/OnKmlReadyEvent.java +28 -0
  49. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  50. package/android/src/main/java/com/rnmaps/fabric/event/OnMapLoadedEvent.java +29 -0
  51. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  52. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  53. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  54. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  55. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  56. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  57. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  58. package/android/src/main/java/com/rnmaps/fabric/event/OnPanDragEvent.java +28 -0
  59. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  60. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  61. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeCompleteEvent.java +30 -0
  62. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  63. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeStartEvent.java +33 -0
  64. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  65. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  66. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +55 -3
  67. package/android/src/main/java/com/rnmaps/maps/MapCallout.java +18 -0
  68. package/android/src/main/java/com/rnmaps/maps/MapCircle.java +24 -0
  69. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  70. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +637 -556
  71. package/android/src/main/java/com/rnmaps/maps/MapMarkerManager.java +3 -3
  72. package/android/src/main/java/com/rnmaps/maps/MapModule.java +206 -206
  73. package/android/src/main/java/com/rnmaps/maps/MapOverlay.java +247 -151
  74. package/android/src/main/java/com/rnmaps/maps/MapOverlayManager.java +23 -1
  75. package/android/src/main/java/com/rnmaps/maps/MapPolygon.java +31 -1
  76. package/android/src/main/java/com/rnmaps/maps/MapPolyline.java +207 -141
  77. package/android/src/main/java/com/rnmaps/maps/MapPolylineManager.java +1 -16
  78. package/android/src/main/java/com/rnmaps/maps/MapUrlTile.java +18 -18
  79. package/android/src/main/java/com/rnmaps/maps/MapUrlTileManager.java +10 -14
  80. package/android/src/main/java/com/rnmaps/maps/MapView.java +1649 -1336
  81. package/android/src/main/java/com/rnmaps/maps/MapWMSTile.java +3 -3
  82. package/android/src/main/java/com/rnmaps/maps/MapWMSTileManager.java +10 -10
  83. package/android/src/main/jni/CMakeLists.txt +36 -0
  84. package/android/src/main/jni/RNMapsSpecs-generated.cpp +68 -0
  85. package/android/src/main/jni/RNMapsSpecs.h +31 -0
  86. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +31 -0
  87. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +33 -0
  88. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +979 -0
  89. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +860 -0
  90. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.cpp +227 -0
  91. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/Props.h +1297 -0
  92. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  93. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +268 -0
  94. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +26 -0
  95. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +131 -0
  96. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  97. package/android/src/main/jni/react/renderer/components/RNMapsSpecs/States.h +137 -0
  98. package/ios/AirGoogleMaps/AIRGoogleMap.h +10 -11
  99. package/ios/AirGoogleMaps/AIRGoogleMap.m +104 -71
  100. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  101. package/ios/AirGoogleMaps/AIRGoogleMapManager.h +1 -0
  102. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +254 -250
  103. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +6 -3
  104. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +1 -1
  105. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +3 -0
  106. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +0 -1
  107. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +0 -7
  108. package/ios/AirGoogleMaps/AIRGoogleMapUrlTile.m +2 -2
  109. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  110. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +4 -4
  111. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +1 -1
  112. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +123 -43
  113. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +16 -1
  114. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  115. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  116. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +26 -0
  117. package/ios/AirMaps/AIRMap.h +8 -9
  118. package/ios/AirMaps/AIRMap.m +222 -239
  119. package/ios/AirMaps/AIRMapManager.m +10 -7
  120. package/ios/AirMaps/AIRMapMarker.h +1 -0
  121. package/ios/AirMaps/AIRMapMarker.m +142 -67
  122. package/ios/AirMaps/AIRMapOverlay.m +2 -2
  123. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  124. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.h +28 -0
  125. package/ios/AirMaps/FabricPlaceholders/PlaceHolderGoogleMapView.mm +68 -0
  126. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.h +25 -0
  127. package/ios/AirMaps/FabricPlaceholders/PlaceHolderPolygonView.mm +43 -0
  128. package/ios/AirMaps/RNMapsAirModule.h +1 -1
  129. package/ios/AirMaps/RNMapsAirModule.mm +4 -3
  130. package/ios/AirMaps/RNMapsDefines.h +1 -0
  131. package/ios/AirMaps/RNMapsMapView.h +1 -1
  132. package/ios/AirMaps/RNMapsMapView.mm +119 -95
  133. package/ios/AirMaps/RNMapsMapViewManager.mm +19 -1
  134. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  135. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  136. package/ios/AirMaps/RNMapsMarkerViewManager.mm +28 -0
  137. package/ios/AirMaps.xcodeproj/project.pbxproj +20 -0
  138. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  139. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  140. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  141. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  142. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  143. package/ios/generated/RCTThirdPartyComponentsProvider.mm +26 -0
  144. package/ios/{AirMaps → generated}/RNMapsAirModuleDelegate.h +2 -2
  145. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +29 -0
  146. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +31 -0
  147. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +977 -0
  148. package/ios/generated/RNMapsSpecs/EventEmitters.h +846 -0
  149. package/ios/generated/RNMapsSpecs/Props.cpp +194 -0
  150. package/ios/generated/RNMapsSpecs/Props.h +1224 -0
  151. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +591 -0
  152. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  153. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +137 -0
  154. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +24 -0
  155. package/ios/generated/RNMapsSpecs/ShadowNodes.h +109 -0
  156. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  157. package/ios/generated/RNMapsSpecs/States.h +113 -0
  158. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  159. package/ios/generated/RNMapsSpecsJSI.h +268 -0
  160. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  161. package/package.json +26 -19
  162. package/react-native-google-maps.podspec +26 -0
  163. package/react-native-maps-generated.podspec +31 -0
  164. package/react-native-maps.podspec +55 -15
  165. package/react-native.config.js +16 -0
  166. package/src/AnimatedRegion.ts +169 -0
  167. package/src/Geojson.tsx +541 -0
  168. package/src/MapCallout.tsx +77 -0
  169. package/src/MapCalloutSubview.tsx +64 -0
  170. package/src/MapCircle.tsx +162 -0
  171. package/src/MapHeatmap.tsx +125 -0
  172. package/src/MapLocalTile.tsx +60 -0
  173. package/src/MapMarker.tsx +531 -0
  174. package/src/MapMarkerNativeComponent.ts +51 -0
  175. package/src/MapOverlay.tsx +178 -0
  176. package/src/MapPolygon.tsx +188 -0
  177. package/src/MapPolygon.types.ts +25 -0
  178. package/src/MapPolyline.tsx +215 -0
  179. package/src/MapUrlTile.tsx +169 -0
  180. package/src/MapView.tsx +1230 -0
  181. package/src/MapView.types.ts +212 -0
  182. package/src/MapView.web.ts +2 -0
  183. package/src/MapViewNativeComponent.ts +86 -0
  184. package/src/MapWMSTile.tsx +148 -0
  185. package/src/ProviderConstants.ts +2 -0
  186. package/src/createFabricMap.tsx +253 -0
  187. package/src/decorateMapComponent.ts +227 -0
  188. package/src/fixImageProp.ts +17 -0
  189. package/src/index.ts +52 -0
  190. package/src/sharedTypes.ts +101 -0
  191. package/src/specs/NativeAirMapsModule.ts +36 -0
  192. package/src/specs/NativeComponentCallout.ts +63 -0
  193. package/src/specs/NativeComponentCircle.ts +93 -0
  194. package/src/specs/NativeComponentGoogleMapView.ts +922 -0
  195. package/src/specs/NativeComponentGooglePolygon.ts +94 -0
  196. package/src/specs/NativeComponentMapView.ts +1100 -0
  197. package/src/specs/NativeComponentMarker.ts +326 -0
  198. package/src/specs/NativeComponentOverlay.ts +98 -0
  199. package/src/specs/NativeComponentPolyline.ts +124 -0
  200. package/src/specs/NativeComponentUrlTile.ts +128 -0
  201. package/src/specs/NativeComponentWMSTile.ts +107 -0
  202. package/lib/AnimatedRegion.d.ts +0 -19
  203. package/lib/AnimatedRegion.js +0 -134
  204. package/lib/Geojson.d.ts +0 -204
  205. package/lib/Geojson.js +0 -166
  206. package/lib/MapCallout.d.ts +0 -40
  207. package/lib/MapCallout.js +0 -51
  208. package/lib/MapCalloutSubview.d.ts +0 -34
  209. package/lib/MapCalloutSubview.js +0 -48
  210. package/lib/MapCircle.d.ts +0 -117
  211. package/lib/MapCircle.js +0 -53
  212. package/lib/MapHeatmap.d.ts +0 -78
  213. package/lib/MapHeatmap.js +0 -59
  214. package/lib/MapLocalTile.d.ts +0 -35
  215. package/lib/MapLocalTile.js +0 -44
  216. package/lib/MapMarker.d.ts +0 -309
  217. package/lib/MapMarker.js +0 -116
  218. package/lib/MapMarkerNativeComponent.d.ts +0 -15
  219. package/lib/MapMarkerNativeComponent.js +0 -17
  220. package/lib/MapOverlay.d.ts +0 -87
  221. package/lib/MapOverlay.js +0 -63
  222. package/lib/MapPolygon.d.ts +0 -140
  223. package/lib/MapPolygon.js +0 -53
  224. package/lib/MapPolygon.types.d.ts +0 -18
  225. package/lib/MapPolygon.types.js +0 -2
  226. package/lib/MapPolyline.d.ts +0 -156
  227. package/lib/MapPolyline.js +0 -53
  228. package/lib/MapUrlTile.d.ts +0 -134
  229. package/lib/MapUrlTile.js +0 -44
  230. package/lib/MapView.d.ts +0 -715
  231. package/lib/MapView.js +0 -447
  232. package/lib/MapView.types.d.ts +0 -161
  233. package/lib/MapView.types.js +0 -2
  234. package/lib/MapView.web.d.ts +0 -1
  235. package/lib/MapView.web.js +0 -9
  236. package/lib/MapViewNativeComponent.d.ts +0 -18
  237. package/lib/MapViewNativeComponent.js +0 -19
  238. package/lib/MapWMSTile.d.ts +0 -116
  239. package/lib/MapWMSTile.js +0 -44
  240. package/lib/ProviderConstants.d.ts +0 -2
  241. package/lib/ProviderConstants.js +0 -5
  242. package/lib/createFabricMap.d.ts +0 -23
  243. package/lib/createFabricMap.js +0 -175
  244. package/lib/decorateMapComponent.d.ts +0 -36
  245. package/lib/decorateMapComponent.js +0 -80
  246. package/lib/index.d.ts +0 -38
  247. package/lib/index.js +0 -81
  248. package/lib/sharedTypes.d.ts +0 -81
  249. package/lib/sharedTypes.js +0 -2
  250. package/lib/sharedTypesInternal.js +0 -2
  251. package/lib/specs/NativeAirMapsModule.d.ts +0 -31
  252. package/lib/specs/NativeAirMapsModule.js +0 -4
  253. package/lib/specs/NativeComponentGoogleMapView.d.ts +0 -713
  254. package/lib/specs/NativeComponentGoogleMapView.js +0 -21
  255. package/lib/specs/NativeComponentMapView.d.ts +0 -855
  256. package/lib/specs/NativeComponentMapView.js +0 -21
  257. /package/ios/{AirMaps → generated}/RNMapsHostVewDelegate.h +0 -0
  258. /package/{lib/sharedTypesInternal.d.ts → src/sharedTypesInternal.ts} +0 -0
@@ -2,8 +2,26 @@ package com.rnmaps.maps;
2
2
 
3
3
  import android.content.Context;
4
4
  import android.graphics.Bitmap;
5
+ import android.net.Uri;
6
+ import android.os.Handler;
7
+ import android.os.Looper;
5
8
 
9
+ import com.facebook.common.references.CloseableReference;
10
+ import com.facebook.datasource.BaseDataSubscriber;
11
+ import com.facebook.datasource.DataSource;
12
+ import com.facebook.datasource.DataSubscriber;
13
+ import com.facebook.drawee.backends.pipeline.Fresco;
14
+ import com.facebook.drawee.drawable.ScalingUtils;
15
+ import com.facebook.drawee.generic.GenericDraweeHierarchy;
16
+ import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
17
+ import com.facebook.imagepipeline.core.ImagePipeline;
18
+ import com.facebook.imagepipeline.image.CloseableBitmap;
19
+ import com.facebook.imagepipeline.image.CloseableImage;
20
+ import com.facebook.imagepipeline.request.ImageRequest;
21
+ import com.facebook.imagepipeline.request.ImageRequestBuilder;
6
22
  import com.facebook.react.bridge.ReadableArray;
23
+ import com.facebook.react.common.MapBuilder;
24
+ import com.google.android.gms.common.images.ImageManager;
7
25
  import com.google.android.gms.maps.model.BitmapDescriptor;
8
26
  import com.google.android.gms.maps.model.BitmapDescriptorFactory;
9
27
  import com.google.android.gms.maps.model.GroundOverlay;
@@ -11,156 +29,234 @@ import com.google.android.gms.maps.model.GroundOverlayOptions;
11
29
  import com.google.android.gms.maps.model.LatLng;
12
30
  import com.google.android.gms.maps.model.LatLngBounds;
13
31
  import com.google.maps.android.collections.GroundOverlayManager;
32
+ import com.rnmaps.fabric.event.OnPressEvent;
14
33
 
15
- public class MapOverlay extends MapFeature implements ImageReadable {
16
-
17
- private GroundOverlayOptions groundOverlayOptions;
18
- private GroundOverlay groundOverlay;
19
- private LatLngBounds bounds;
20
- private float bearing;
21
- private BitmapDescriptor iconBitmapDescriptor;
22
- private boolean tappable;
23
- private float zIndex;
24
- private float transparency;
25
-
26
- private final ImageReader mImageReader;
27
- private GroundOverlayManager.Collection groundOverlayCollection;
28
-
29
- public MapOverlay(Context context) {
30
- super(context);
31
- this.mImageReader = new ImageReader(context, getResources(), this);
32
- }
33
-
34
- public void setBounds(ReadableArray bounds) {
35
- LatLng sw = new LatLng(bounds.getArray(0).getDouble(0), bounds.getArray(0).getDouble(1));
36
- LatLng ne = new LatLng(bounds.getArray(1).getDouble(0), bounds.getArray(1).getDouble(1));
37
- this.bounds = new LatLngBounds(sw, ne);
38
- if (this.groundOverlay != null) {
39
- this.groundOverlay.setPositionFromBounds(this.bounds);
40
- }
41
- }
42
-
43
- public void setBearing(float bearing){
44
- this.bearing = bearing;
45
- if (this.groundOverlay != null) {
46
- this.groundOverlay.setBearing(bearing);
47
- }
48
- }
49
-
50
- public void setZIndex(float zIndex) {
51
- this.zIndex = zIndex;
52
- if (this.groundOverlay != null) {
53
- this.groundOverlay.setZIndex(zIndex);
54
- }
55
- }
56
-
57
- public void setTransparency(float transparency) {
58
- this.transparency = transparency;
59
- if (groundOverlay != null) {
60
- groundOverlay.setTransparency(transparency);
61
- }
62
- }
63
-
64
- public void setImage(String uri) {
65
- this.mImageReader.setImage(uri);
66
- }
67
-
68
- public void setTappable(boolean tapabble) {
69
- this.tappable = tapabble;
70
- if (groundOverlay != null) {
71
- groundOverlay.setClickable(tappable);
72
- }
73
- }
74
-
75
-
76
- public GroundOverlayOptions getGroundOverlayOptions() {
77
- if (this.groundOverlayOptions == null) {
78
- this.groundOverlayOptions = createGroundOverlayOptions();
79
- }
80
- return this.groundOverlayOptions;
81
- }
82
-
83
- private GroundOverlayOptions createGroundOverlayOptions() {
84
- if (this.groundOverlayOptions != null) {
85
- return this.groundOverlayOptions;
86
- }
87
- GroundOverlayOptions options = new GroundOverlayOptions();
88
- if (this.iconBitmapDescriptor != null) {
89
- options.image(iconBitmapDescriptor);
90
- } else {
91
- // add stub image to be able to instantiate the overlay
92
- // and store a reference to it in MapView
93
- options.image(BitmapDescriptorFactory.defaultMarker());
94
- // hide overlay until real image gets added
95
- options.visible(false);
96
- }
97
- options.positionFromBounds(bounds);
98
- options.zIndex(zIndex);
99
- options.bearing(bearing);
100
- options.transparency(transparency);
101
- return options;
102
- }
103
-
104
- @Override
105
- public Object getFeature() {
106
- return groundOverlay;
107
- }
108
-
109
- @Override
110
- public void addToMap(Object collection) {
111
- GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection;
112
- GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions();
113
- if (groundOverlayOptions != null) {
114
- groundOverlay = groundOverlayCollection.addGroundOverlay(groundOverlayOptions);
115
- groundOverlay.setClickable(this.tappable);
116
- } else {
117
- this.groundOverlayCollection = groundOverlayCollection;
118
- }
119
- }
120
-
121
- @Override
122
- public void removeFromMap(Object collection) {
123
- if (groundOverlay != null) {
124
- GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection;
125
- groundOverlayCollection.remove(groundOverlay);
126
- groundOverlay = null;
127
- groundOverlayOptions = null;
128
- }
129
- groundOverlayCollection = null;
130
- }
131
-
132
- @Override
133
- public void setIconBitmap(Bitmap bitmap) {
134
- }
135
-
136
- @Override
137
- public void setIconBitmapDescriptor(
138
- BitmapDescriptor iconBitmapDescriptor) {
139
- this.iconBitmapDescriptor = iconBitmapDescriptor;
140
- }
141
-
142
- @Override
143
- public void update() {
144
- this.groundOverlay = getGroundOverlay();
145
- if (this.groundOverlay != null) {
146
- this.groundOverlay.setVisible(true);
147
- this.groundOverlay.setImage(this.iconBitmapDescriptor);
148
- this.groundOverlay.setTransparency(this.transparency);
149
- this.groundOverlay.setClickable(this.tappable);
150
- }
151
- }
152
-
153
- private GroundOverlay getGroundOverlay() {
154
- if (this.groundOverlay != null) {
155
- return this.groundOverlay;
156
- }
157
- if (this.groundOverlayCollection == null) {
158
- return null;
159
- }
160
- GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions();
161
- if (groundOverlayOptions != null) {
162
- return this.groundOverlayCollection.addGroundOverlay(groundOverlayOptions);
163
- }
164
- return null;
165
- }
34
+ import java.util.Map;
35
+ import java.util.concurrent.Executors;
36
+
37
+ public class MapOverlay extends MapFeature {
38
+
39
+
40
+ private String imageUri;
41
+
42
+ private GroundOverlayOptions groundOverlayOptions;
43
+ private GroundOverlay groundOverlay;
44
+ private LatLngBounds bounds;
45
+ private float bearing;
46
+ private BitmapDescriptor bitmapDescriptor;
47
+ private boolean tappable;
48
+ private float zIndex;
49
+ private float transparency;
50
+
51
+ private DataSource<CloseableReference<CloseableImage>> dataSource;
52
+
53
+ private GroundOverlayManager.Collection groundOverlayCollection;
54
+
55
+ private ImageManager.OnImageLoadedListener imageLoadedListener;
56
+
57
+
58
+ public MapOverlay(Context context) {
59
+ super(context);
60
+ transparency = 1;
61
+ }
62
+
63
+ private GenericDraweeHierarchy createDraweeHierarchy() {
64
+ return new GenericDraweeHierarchyBuilder(getResources())
65
+ .setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER)
66
+ .setFadeDuration(0)
67
+ .build();
68
+ }
69
+
70
+
71
+
72
+ public void setBounds(LatLngBounds bounds) {
73
+ this.bounds = bounds;
74
+ if (this.groundOverlay != null) {
75
+ this.groundOverlay.setPositionFromBounds(this.bounds);
76
+ }
77
+ }
78
+
79
+ public void setBearing(float bearing) {
80
+ this.bearing = bearing;
81
+ if (this.groundOverlay != null) {
82
+ this.groundOverlay.setBearing(bearing);
83
+ }
84
+ }
85
+
86
+ public void setZIndex(float zIndex) {
87
+ this.zIndex = zIndex;
88
+ if (this.groundOverlay != null) {
89
+ this.groundOverlay.setZIndex(zIndex);
90
+ }
91
+ }
92
+
93
+ public void setTransparency(float transparency) {
94
+ this.transparency = transparency;
95
+ if (groundOverlay != null) {
96
+ groundOverlay.setTransparency(transparency);
97
+ }
98
+ }
99
+
100
+
101
+ public void setImage(String uri) {
102
+ boolean shouldLoadImage = true;
103
+
104
+ this.imageUri = uri;
105
+ if (!shouldLoadImage) {
106
+ return;
107
+ }
108
+
109
+ if (uri == null) {
110
+ bitmapDescriptor = null;
111
+ } else if (uri.startsWith("http://") || uri.startsWith("https://") ||
112
+ uri.startsWith("file://") || uri.startsWith("asset://") || uri.startsWith("data:")) {
113
+
114
+ ImageRequest imageRequest = ImageRequestBuilder
115
+ .newBuilderWithSource(Uri.parse(uri))
116
+ .build();
117
+
118
+ ImagePipeline imagePipeline = Fresco.getImagePipeline();
119
+ dataSource = imagePipeline.fetchDecodedImage(imageRequest, this);
120
+
121
+ DataSubscriber<CloseableReference<CloseableImage>> subscriber = new BaseDataSubscriber<CloseableReference<CloseableImage>>() {
122
+ @Override
123
+ protected void onNewResultImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
124
+ if (!dataSource.isFinished()) {
125
+ return;
126
+ }
127
+
128
+ CloseableReference<CloseableImage> imageReference = dataSource.getResult();
129
+ if (imageReference != null) {
130
+ try {
131
+ CloseableImage closeableImage = imageReference.get();
132
+ if (closeableImage instanceof CloseableBitmap) {
133
+ Bitmap bitmap = ((CloseableBitmap) closeableImage).getUnderlyingBitmap();
134
+ if (bitmap != null) {
135
+ bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap);
136
+ }
137
+ }
138
+ } finally {
139
+ CloseableReference.closeSafely(imageReference);
140
+ }
141
+ new Handler(Looper.getMainLooper()).post(() -> update());
142
+ }
143
+ }
144
+
145
+ @Override
146
+ protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
147
+ // Handle failure
148
+ }
149
+ };
150
+
151
+ dataSource.subscribe(subscriber, Executors.newSingleThreadExecutor());
152
+
153
+ } else {
154
+ bitmapDescriptor = getBitmapDescriptorByName(uri);
155
+ }
156
+ }
157
+
158
+
159
+ private BitmapDescriptor getBitmapDescriptorByName(String name) {
160
+ return BitmapDescriptorFactory.fromResource(getDrawableResourceByName(name));
161
+ }
162
+
163
+ private int getDrawableResourceByName(String name) {
164
+ return getResources().getIdentifier(
165
+ name,
166
+ "drawable",
167
+ getContext().getPackageName());
168
+ }
169
+
170
+ public void setTappable(boolean tapabble) {
171
+ this.tappable = tapabble;
172
+ if (groundOverlay != null) {
173
+ groundOverlay.setClickable(tappable);
174
+ }
175
+ }
176
+
177
+ public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
178
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
179
+ builder.put(OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME));
180
+ return builder.build();
181
+ }
182
+
183
+ public GroundOverlayOptions getGroundOverlayOptions() {
184
+ if (this.groundOverlayOptions == null) {
185
+ this.groundOverlayOptions = createGroundOverlayOptions();
186
+ }
187
+ return this.groundOverlayOptions;
188
+ }
189
+
190
+ private GroundOverlayOptions createGroundOverlayOptions() {
191
+ if (this.groundOverlayOptions != null) {
192
+ return this.groundOverlayOptions;
193
+ }
194
+ GroundOverlayOptions options = new GroundOverlayOptions();
195
+ if (this.bitmapDescriptor != null) {
196
+ options.image(bitmapDescriptor);
197
+ } else {
198
+ // add stub image to be able to instantiate the overlay
199
+ // and store a reference to it in MapView
200
+ options.image(BitmapDescriptorFactory.defaultMarker());
201
+ // hide overlay until real image gets added
202
+ options.visible(false);
203
+ }
204
+ options.positionFromBounds(bounds);
205
+ options.zIndex(zIndex);
206
+ options.bearing(bearing);
207
+ // options.transparency(transparency);
208
+ return options;
209
+ }
210
+
211
+ @Override
212
+ public Object getFeature() {
213
+ return groundOverlay;
214
+ }
215
+
216
+ @Override
217
+ public void addToMap(Object collection) {
218
+ GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection;
219
+ GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions();
220
+ if (groundOverlayOptions != null) {
221
+ groundOverlay = groundOverlayCollection.addGroundOverlay(groundOverlayOptions);
222
+ groundOverlay.setClickable(this.tappable);
223
+ } else {
224
+ this.groundOverlayCollection = groundOverlayCollection;
225
+ }
226
+ }
227
+
228
+ @Override
229
+ public void removeFromMap(Object collection) {
230
+ if (groundOverlay != null) {
231
+ GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection;
232
+ groundOverlayCollection.remove(groundOverlay);
233
+ groundOverlay = null;
234
+ groundOverlayOptions = null;
235
+ }
236
+ groundOverlayCollection = null;
237
+ }
238
+
239
+ public void update() {
240
+ this.groundOverlay = getGroundOverlay();
241
+ if (this.groundOverlay != null) {
242
+ this.groundOverlay.setVisible(true);
243
+ this.groundOverlay.setImage(this.bitmapDescriptor);
244
+ // this.groundOverlay.setTransparency(this.transparency);
245
+ this.groundOverlay.setClickable(this.tappable);
246
+ }
247
+ }
248
+
249
+ private GroundOverlay getGroundOverlay() {
250
+ if (this.groundOverlay != null) {
251
+ return this.groundOverlay;
252
+ }
253
+ if (this.groundOverlayCollection == null) {
254
+ return null;
255
+ }
256
+ GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions();
257
+ if (groundOverlayOptions != null) {
258
+ return this.groundOverlayCollection.addGroundOverlay(groundOverlayOptions);
259
+ }
260
+ return null;
261
+ }
166
262
  }
@@ -12,6 +12,8 @@ import com.facebook.react.common.MapBuilder;
12
12
  import com.facebook.react.uimanager.ThemedReactContext;
13
13
  import com.facebook.react.uimanager.ViewGroupManager;
14
14
  import com.facebook.react.uimanager.annotations.ReactProp;
15
+ import com.google.android.gms.maps.model.LatLng;
16
+ import com.google.android.gms.maps.model.LatLngBounds;
15
17
 
16
18
  import java.util.Map;
17
19
 
@@ -37,7 +39,27 @@ public class MapOverlayManager extends ViewGroupManager<MapOverlay> {
37
39
 
38
40
  @ReactProp(name = "bounds")
39
41
  public void setBounds(MapOverlay view, ReadableArray bounds) {
40
- view.setBounds(bounds);
42
+ view.setBounds(fixBoundsIfNecessary(bounds));
43
+ }
44
+
45
+ // seems like apple users north west, south east
46
+ // google uses north east, south west
47
+ private static LatLngBounds fixBoundsIfNecessary(ReadableArray bounds) {
48
+ double lat1 = bounds.getArray(0).getDouble(0);
49
+ double lon1 = bounds.getArray(0).getDouble(1);
50
+ double lat2 = bounds.getArray(1).getDouble(0);
51
+ double lon2 = bounds.getArray(1).getDouble(1);
52
+
53
+ // Ensure lat1/lon1 is the SW corner and lat2/lon2 is the NE corner
54
+ double southLat = Math.min(lat1, lat2);
55
+ double northLat = Math.max(lat1, lat2);
56
+ double westLon = Math.min(lon1, lon2);
57
+ double eastLon = Math.max(lon1, lon2);
58
+
59
+ // Create corrected LatLngs
60
+ LatLng sw = new LatLng(southLat, westLon);
61
+ LatLng ne = new LatLng(northLat, eastLon);
62
+ return new LatLngBounds(sw, ne);
41
63
  }
42
64
 
43
65
  @ReactProp(name = "bearing")
@@ -1,9 +1,16 @@
1
1
  package com.rnmaps.maps;
2
2
 
3
3
  import android.content.Context;
4
+ import android.graphics.Color;
4
5
 
6
+ import com.facebook.react.bridge.ReactContext;
5
7
  import com.facebook.react.bridge.ReadableArray;
6
8
  import com.facebook.react.bridge.ReadableMap;
9
+ import com.facebook.react.bridge.WritableMap;
10
+ import com.facebook.react.common.MapBuilder;
11
+ import com.facebook.react.uimanager.UIManagerHelper;
12
+ import com.facebook.react.uimanager.events.Event;
13
+ import com.facebook.react.uimanager.events.EventDispatcher;
7
14
  import com.google.android.gms.maps.model.Dash;
8
15
  import com.google.android.gms.maps.model.Gap;
9
16
  import com.google.android.gms.maps.model.LatLng;
@@ -11,9 +18,11 @@ import com.google.android.gms.maps.model.PatternItem;
11
18
  import com.google.android.gms.maps.model.Polygon;
12
19
  import com.google.android.gms.maps.model.PolygonOptions;
13
20
  import com.google.maps.android.collections.PolygonManager;
21
+ import com.rnmaps.fabric.event.OnPressEvent;
14
22
 
15
23
  import java.util.ArrayList;
16
24
  import java.util.List;
25
+ import java.util.Map;
17
26
 
18
27
  public class MapPolygon extends MapFeature {
19
28
 
@@ -33,8 +42,29 @@ public class MapPolygon extends MapFeature {
33
42
 
34
43
  public MapPolygon(Context context) {
35
44
  super(context);
45
+ strokeWidth = 10;
36
46
  }
37
47
 
48
+ public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
49
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
50
+ builder.put(OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME));
51
+ return builder.build();
52
+ }
53
+
54
+ public <T extends Event> void dispatchEvent(WritableMap payload, MapView.EventCreator<T> creator, ReactContext reactContext) {
55
+
56
+ // Get the event dispatcher
57
+ EventDispatcher eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, getId());
58
+
59
+ // If there is a dispatcher, create and dispatch the event
60
+ if (eventDispatcher != null) {
61
+ int surfaceId = UIManagerHelper.getSurfaceId(reactContext);
62
+ T event = creator.create(surfaceId, getId(), payload);
63
+ eventDispatcher.dispatchEvent(event);
64
+ }
65
+ }
66
+
67
+
38
68
  public void setCoordinates(ReadableArray coordinates) {
39
69
  // it's kind of a bummer that we can't run map() or anything on the ReadableArray
40
70
  this.coordinates = new ArrayList<>(coordinates.size());
@@ -164,6 +194,7 @@ public class MapPolygon extends MapFeature {
164
194
  options.geodesic(geodesic);
165
195
  options.zIndex(zIndex);
166
196
  options.strokePattern(this.pattern);
197
+ options.clickable(this.tappable);
167
198
 
168
199
  if (this.holes != null) {
169
200
  for (int i = 0; i < holes.size(); i++) {
@@ -183,7 +214,6 @@ public class MapPolygon extends MapFeature {
183
214
  public void addToMap(Object collection) {
184
215
  PolygonManager.Collection polygonCollection = (PolygonManager.Collection) collection;
185
216
  polygon = polygonCollection.addPolygon(getPolygonOptions());
186
- polygon.setClickable(this.tappable);
187
217
  }
188
218
 
189
219
  @Override