react-native-map4d-map-dtqg 0.1.3 → 0.1.5

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 (321) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +191 -133
  3. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  4. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/8.9/gc.properties +0 -0
  8. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  9. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  11. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  12. package/android/.gradle/9.2.0/gc.properties +0 -0
  13. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/android/.gradle/vcs-1/gc.properties +0 -0
  16. package/android/build.gradle +60 -60
  17. package/android/src/main/AndroidManifest.xml +4 -4
  18. package/android/src/main/java/com/reactnativemap4dmap/ImageUtils.java +87 -87
  19. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapModule.java +310 -298
  20. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapPackage.java +35 -35
  21. package/android/src/main/java/com/reactnativemap4dmap/Map4dMapViewManager.java +31 -31
  22. package/android/src/main/java/com/reactnativemap4dmap/RMFBuilding.java +167 -167
  23. package/android/src/main/java/com/reactnativemap4dmap/RMFBuildingManager.java +121 -121
  24. package/android/src/main/java/com/reactnativemap4dmap/RMFCircle.java +105 -105
  25. package/android/src/main/java/com/reactnativemap4dmap/RMFCircleManager.java +121 -121
  26. package/android/src/main/java/com/reactnativemap4dmap/RMFDirectionsRenderer.java +502 -502
  27. package/android/src/main/java/com/reactnativemap4dmap/RMFDirectionsRendererManager.java +143 -143
  28. package/android/src/main/java/com/reactnativemap4dmap/RMFFeature.java +17 -17
  29. package/android/src/main/java/com/reactnativemap4dmap/RMFMapView.java +1172 -1172
  30. package/android/src/main/java/com/reactnativemap4dmap/RMFMapViewManager.java +231 -231
  31. package/android/src/main/java/com/reactnativemap4dmap/RMFMarker.java +412 -412
  32. package/android/src/main/java/com/reactnativemap4dmap/RMFMarkerManager.java +211 -211
  33. package/android/src/main/java/com/reactnativemap4dmap/RMFPOI.java +222 -222
  34. package/android/src/main/java/com/reactnativemap4dmap/RMFPOIManager.java +119 -119
  35. package/android/src/main/java/com/reactnativemap4dmap/RMFPolygon.java +172 -172
  36. package/android/src/main/java/com/reactnativemap4dmap/RMFPolygonManager.java +147 -147
  37. package/android/src/main/java/com/reactnativemap4dmap/RMFPolyline.java +146 -146
  38. package/android/src/main/java/com/reactnativemap4dmap/RMFPolylineManager.java +137 -137
  39. package/android/src/main/java/com/reactnativemap4dmap/RMFTileOverlay.java +95 -95
  40. package/android/src/main/java/com/reactnativemap4dmap/RMFTileOverlayManager.java +64 -64
  41. package/android/src/main/java/com/reactnativemap4dmap/SizeReportingShadowNode.java +31 -31
  42. package/android/src/main/java/com/reactnativemap4dmap/ViewAttacherGroup.java +31 -31
  43. package/android/src/main/java/com/reactnativemap4dmap/ViewChangesTracker.java +70 -70
  44. package/android/src/main/java/vn/map4d/map/annotations/RMFBitmapDescriptor.java +9 -9
  45. package/ios/Map4dMap.h +16 -7
  46. package/ios/Map4dMap.m +119 -14
  47. package/ios/Map4dMapTurbo.mm +16 -0
  48. package/ios/RCTConvert+Map4dMap.h +33 -33
  49. package/ios/RCTConvert+Map4dMap.m +112 -112
  50. package/ios/RMFCircle.h +37 -37
  51. package/ios/RMFCircle.m +100 -100
  52. package/ios/RMFCircleManager.h +18 -18
  53. package/ios/RMFCircleManager.m +127 -155
  54. package/ios/RMFCircleMap4d.h +23 -23
  55. package/ios/RMFCircleMap4d.m +13 -13
  56. package/ios/RMFCoordinate.h +22 -22
  57. package/ios/RMFCoordinate.m +13 -13
  58. package/ios/RMFDirectionsMarkerOptions.h +24 -24
  59. package/ios/RMFDirectionsMarkerOptions.m +23 -23
  60. package/ios/RMFDirectionsRenderer.h +47 -47
  61. package/ios/RMFDirectionsRenderer.m +182 -182
  62. package/ios/RMFDirectionsRendererManager.h +17 -17
  63. package/ios/RMFDirectionsRendererManager.m +86 -84
  64. package/ios/RMFDirectionsRendererMap4d.h +21 -21
  65. package/ios/RMFDirectionsRendererMap4d.m +12 -12
  66. package/ios/RMFDummyView.h +6 -6
  67. package/ios/RMFDummyView.m +12 -12
  68. package/ios/RMFEventResponse.h +39 -39
  69. package/ios/RMFEventResponse.m +98 -98
  70. package/ios/RMFIcon.h +24 -24
  71. package/ios/RMFIcon.m +35 -35
  72. package/ios/RMFMapView.h +84 -84
  73. package/ios/RMFMapView.m +376 -376
  74. package/ios/RMFMapViewManager.h +17 -17
  75. package/ios/RMFMapViewManager.m +424 -509
  76. package/ios/RMFMarker.h +57 -57
  77. package/ios/RMFMarker.m +267 -267
  78. package/ios/RMFMarkerManager.h +17 -17
  79. package/ios/RMFMarkerManager.m +128 -156
  80. package/ios/RMFMarkerMap4d.h +19 -19
  81. package/ios/RMFMarkerMap4d.m +13 -13
  82. package/ios/RMFPOI.h +38 -38
  83. package/ios/RMFPOI.m +123 -123
  84. package/ios/RMFPOIManager.h +18 -18
  85. package/ios/RMFPOIManager.m +134 -168
  86. package/ios/RMFPOIMap4d.h +22 -22
  87. package/ios/RMFPOIMap4d.m +12 -12
  88. package/ios/RMFPolygon.h +41 -41
  89. package/ios/RMFPolygon.m +106 -106
  90. package/ios/RMFPolygonManager.h +18 -18
  91. package/ios/RMFPolygonManager.m +119 -141
  92. package/ios/RMFPolygonMap4d.h +23 -23
  93. package/ios/RMFPolygonMap4d.m +15 -15
  94. package/ios/RMFPolyline.h +38 -38
  95. package/ios/RMFPolyline.m +101 -101
  96. package/ios/RMFPolylineManager.h +18 -18
  97. package/ios/RMFPolylineManager.m +117 -139
  98. package/ios/RMFPolylineMap4d.h +22 -22
  99. package/ios/RMFPolylineMap4d.m +15 -15
  100. package/ios/building/RMFBuilding.h +41 -41
  101. package/ios/building/RMFBuilding.m +104 -104
  102. package/ios/building/RMFBuildingManager.h +19 -19
  103. package/ios/building/RMFBuildingManager.m +105 -133
  104. package/ios/building/RMFBuildingMap4d.h +23 -23
  105. package/ios/building/RMFBuildingMap4d.m +15 -15
  106. package/ios/overlays/RMFTileOverlay.h +36 -36
  107. package/ios/overlays/RMFTileOverlay.m +64 -64
  108. package/ios/overlays/RMFTileOverlayManager.h +17 -17
  109. package/ios/overlays/RMFTileOverlayManager.m +27 -27
  110. package/lib/commonjs/components/MFBanDoSo/constants.js +27 -0
  111. package/lib/commonjs/components/MFBanDoSo/constants.js.map +1 -0
  112. package/lib/commonjs/components/MFBanDoSo/helpers.js +200 -0
  113. package/lib/commonjs/components/MFBanDoSo/helpers.js.map +1 -0
  114. package/lib/commonjs/components/MFBanDoSo/propTypes.js +18 -0
  115. package/lib/commonjs/components/MFBanDoSo/propTypes.js.map +1 -0
  116. package/lib/commonjs/components/MFBanDoSo/styles.js +328 -0
  117. package/lib/commonjs/components/MFBanDoSo/styles.js.map +1 -0
  118. package/lib/commonjs/components/MFBanDoSo/ui.js +220 -0
  119. package/lib/commonjs/components/MFBanDoSo/ui.js.map +1 -0
  120. package/lib/commonjs/components/MFBanDoSo.js +190 -73
  121. package/lib/commonjs/components/MFBanDoSo.js.map +1 -1
  122. package/lib/commonjs/components/MFBuilding.js +41 -98
  123. package/lib/commonjs/components/MFBuilding.js.map +1 -1
  124. package/lib/commonjs/components/MFCircle.js +40 -90
  125. package/lib/commonjs/components/MFCircle.js.map +1 -1
  126. package/lib/commonjs/components/MFDirectionsRenderer.js +47 -107
  127. package/lib/commonjs/components/MFDirectionsRenderer.js.map +1 -1
  128. package/lib/commonjs/components/MFMapView.js +119 -199
  129. package/lib/commonjs/components/MFMapView.js.map +1 -1
  130. package/lib/commonjs/components/MFMarker.js +50 -118
  131. package/lib/commonjs/components/MFMarker.js.map +1 -1
  132. package/lib/commonjs/components/MFPOI.js +37 -94
  133. package/lib/commonjs/components/MFPOI.js.map +1 -1
  134. package/lib/commonjs/components/MFPolygon.js +37 -91
  135. package/lib/commonjs/components/MFPolygon.js.map +1 -1
  136. package/lib/commonjs/components/MFPolyline.js +35 -87
  137. package/lib/commonjs/components/MFPolyline.js.map +1 -1
  138. package/lib/commonjs/components/MFTileOverlay.js +16 -24
  139. package/lib/commonjs/components/MFTileOverlay.js.map +1 -1
  140. package/lib/commonjs/components/Map4dMapView.js +1 -4
  141. package/lib/commonjs/components/Map4dMapView.js.map +1 -1
  142. package/lib/commonjs/components/extends/AreaFocusManager.js +20 -54
  143. package/lib/commonjs/components/extends/AreaFocusManager.js.map +1 -1
  144. package/lib/commonjs/components/extends/AreaFocuser.js +3 -19
  145. package/lib/commonjs/components/extends/AreaFocuser.js.map +1 -1
  146. package/lib/commonjs/components/extends/BoundHelper.js +0 -6
  147. package/lib/commonjs/components/extends/BoundHelper.js.map +1 -1
  148. package/lib/commonjs/components/extends/area/AreaFocusAreas.js +0 -37
  149. package/lib/commonjs/components/extends/area/AreaFocusAreas.js.map +1 -1
  150. package/lib/commonjs/components/extends/area/AreaFocusGeometryUtils.js +1 -35
  151. package/lib/commonjs/components/extends/area/AreaFocusGeometryUtils.js.map +1 -1
  152. package/lib/commonjs/components/extends/area/AreaFocusSession.js +0 -18
  153. package/lib/commonjs/components/extends/area/AreaFocusSession.js.map +1 -1
  154. package/lib/commonjs/components/extends/area/AreaFocusTypes.js +20 -21
  155. package/lib/commonjs/components/extends/area/AreaFocusTypes.js.map +1 -1
  156. package/lib/commonjs/components/internal/DefaultRoadmapStyle.js +1 -2
  157. package/lib/commonjs/components/internal/DefaultRoadmapStyle.js.map +1 -1
  158. package/lib/commonjs/components/internal/GeojsonStyleUtils.js +20 -31
  159. package/lib/commonjs/components/internal/GeojsonStyleUtils.js.map +1 -1
  160. package/lib/commonjs/index.js +0 -11
  161. package/lib/commonjs/index.js.map +1 -1
  162. package/lib/commonjs/native/Map4dMapNativeModule.js +10 -0
  163. package/lib/commonjs/native/Map4dMapNativeModule.js.map +1 -0
  164. package/lib/commonjs/native/NativeModuleResolver.js +35 -0
  165. package/lib/commonjs/native/NativeModuleResolver.js.map +1 -0
  166. package/lib/commonjs/native/ViewManagerCommand.js +67 -0
  167. package/lib/commonjs/native/ViewManagerCommand.js.map +1 -0
  168. package/lib/commonjs/package.json +1 -0
  169. package/lib/commonjs/specs/NativeMap4dMap.js +9 -0
  170. package/lib/commonjs/specs/NativeMap4dMap.js.map +1 -0
  171. package/lib/module/components/MFBanDoSo/constants.js +22 -0
  172. package/lib/module/components/MFBanDoSo/constants.js.map +1 -0
  173. package/lib/module/components/MFBanDoSo/helpers.js +188 -0
  174. package/lib/module/components/MFBanDoSo/helpers.js.map +1 -0
  175. package/lib/module/components/MFBanDoSo/propTypes.js +14 -0
  176. package/lib/module/components/MFBanDoSo/propTypes.js.map +1 -0
  177. package/lib/module/components/MFBanDoSo/styles.js +325 -0
  178. package/lib/module/components/MFBanDoSo/styles.js.map +1 -0
  179. package/lib/module/components/MFBanDoSo/ui.js +213 -0
  180. package/lib/module/components/MFBanDoSo/ui.js.map +1 -0
  181. package/lib/module/components/MFBanDoSo.js +192 -63
  182. package/lib/module/components/MFBanDoSo.js.map +1 -1
  183. package/lib/module/components/MFBuilding.js +43 -90
  184. package/lib/module/components/MFBuilding.js.map +1 -1
  185. package/lib/module/components/MFCircle.js +42 -82
  186. package/lib/module/components/MFCircle.js.map +1 -1
  187. package/lib/module/components/MFDirectionsRenderer.js +48 -99
  188. package/lib/module/components/MFDirectionsRenderer.js.map +1 -1
  189. package/lib/module/components/MFMapView.js +120 -188
  190. package/lib/module/components/MFMapView.js.map +1 -1
  191. package/lib/module/components/MFMarker.js +52 -109
  192. package/lib/module/components/MFMarker.js.map +1 -1
  193. package/lib/module/components/MFPOI.js +39 -86
  194. package/lib/module/components/MFPOI.js.map +1 -1
  195. package/lib/module/components/MFPolygon.js +39 -83
  196. package/lib/module/components/MFPolygon.js.map +1 -1
  197. package/lib/module/components/MFPolyline.js +37 -79
  198. package/lib/module/components/MFPolyline.js.map +1 -1
  199. package/lib/module/components/MFTileOverlay.js +19 -18
  200. package/lib/module/components/MFTileOverlay.js.map +1 -1
  201. package/lib/module/components/Map4dMapView.js +2 -0
  202. package/lib/module/components/Map4dMapView.js.map +1 -1
  203. package/lib/module/components/extends/AreaFocusManager.js +22 -48
  204. package/lib/module/components/extends/AreaFocusManager.js.map +1 -1
  205. package/lib/module/components/extends/AreaFocuser.js +5 -17
  206. package/lib/module/components/extends/AreaFocuser.js.map +1 -1
  207. package/lib/module/components/extends/BoundHelper.js +2 -5
  208. package/lib/module/components/extends/BoundHelper.js.map +1 -1
  209. package/lib/module/components/extends/area/AreaFocusAreas.js +2 -33
  210. package/lib/module/components/extends/area/AreaFocusAreas.js.map +1 -1
  211. package/lib/module/components/extends/area/AreaFocusGeometryUtils.js +2 -32
  212. package/lib/module/components/extends/area/AreaFocusGeometryUtils.js.map +1 -1
  213. package/lib/module/components/extends/area/AreaFocusSession.js +2 -17
  214. package/lib/module/components/extends/area/AreaFocusSession.js.map +1 -1
  215. package/lib/module/components/extends/area/AreaFocusTypes.js +21 -18
  216. package/lib/module/components/extends/area/AreaFocusTypes.js.map +1 -1
  217. package/lib/module/components/internal/DefaultRoadmapStyle.js +2 -0
  218. package/lib/module/components/internal/DefaultRoadmapStyle.js.map +1 -1
  219. package/lib/module/components/internal/GeojsonStyleUtils.js +21 -28
  220. package/lib/module/components/internal/GeojsonStyleUtils.js.map +1 -1
  221. package/lib/module/index.js +2 -0
  222. package/lib/module/index.js.map +1 -1
  223. package/lib/module/native/Map4dMapNativeModule.js +5 -0
  224. package/lib/module/native/Map4dMapNativeModule.js.map +1 -0
  225. package/lib/module/native/NativeModuleResolver.js +29 -0
  226. package/lib/module/native/NativeModuleResolver.js.map +1 -0
  227. package/lib/module/native/ViewManagerCommand.js +61 -0
  228. package/lib/module/native/ViewManagerCommand.js.map +1 -0
  229. package/lib/module/specs/NativeMap4dMap.js +5 -0
  230. package/lib/module/specs/NativeMap4dMap.js.map +1 -0
  231. package/lib/typescript/components/MFBanDoSo/constants.d.ts +8 -0
  232. package/lib/typescript/components/MFBanDoSo/constants.d.ts.map +1 -0
  233. package/lib/typescript/components/MFBanDoSo/helpers.d.ts +14 -0
  234. package/lib/typescript/components/MFBanDoSo/helpers.d.ts.map +1 -0
  235. package/lib/typescript/components/MFBanDoSo/propTypes.d.ts +2 -0
  236. package/lib/typescript/components/MFBanDoSo/propTypes.d.ts.map +1 -0
  237. package/lib/typescript/components/MFBanDoSo/styles.d.ts +462 -0
  238. package/lib/typescript/components/MFBanDoSo/styles.d.ts.map +1 -0
  239. package/lib/typescript/components/MFBanDoSo/ui.d.ts +30 -0
  240. package/lib/typescript/components/MFBanDoSo/ui.d.ts.map +1 -0
  241. package/lib/typescript/components/MFBanDoSo.d.ts +37 -0
  242. package/lib/typescript/components/MFBanDoSo.d.ts.map +1 -0
  243. package/lib/typescript/components/MFBuilding.d.ts +24 -0
  244. package/lib/typescript/components/MFBuilding.d.ts.map +1 -0
  245. package/lib/typescript/components/MFCircle.d.ts +24 -0
  246. package/lib/typescript/components/MFCircle.d.ts.map +1 -0
  247. package/lib/typescript/components/MFDirectionsRenderer.d.ts +19 -0
  248. package/lib/typescript/components/MFDirectionsRenderer.d.ts.map +1 -0
  249. package/lib/typescript/components/MFMapView.d.ts +66 -0
  250. package/lib/typescript/components/MFMapView.d.ts.map +1 -0
  251. package/lib/typescript/components/MFMarker.d.ts +26 -0
  252. package/lib/typescript/components/MFMarker.d.ts.map +1 -0
  253. package/lib/typescript/components/MFPOI.d.ts +24 -0
  254. package/lib/typescript/components/MFPOI.d.ts.map +1 -0
  255. package/lib/typescript/components/MFPolygon.d.ts +24 -0
  256. package/lib/typescript/components/MFPolygon.d.ts.map +1 -0
  257. package/lib/typescript/components/MFPolyline.d.ts +24 -0
  258. package/lib/typescript/components/MFPolyline.d.ts.map +1 -0
  259. package/lib/typescript/components/MFTileOverlay.d.ts +12 -0
  260. package/lib/typescript/components/MFTileOverlay.d.ts.map +1 -0
  261. package/lib/typescript/components/Map4dMapView.d.ts +2 -1
  262. package/lib/typescript/components/Map4dMapView.d.ts.map +1 -0
  263. package/lib/typescript/components/extends/AreaFocusManager.d.ts +34 -0
  264. package/lib/typescript/components/extends/AreaFocusManager.d.ts.map +1 -0
  265. package/lib/typescript/components/extends/AreaFocuser.d.ts +15 -0
  266. package/lib/typescript/components/extends/AreaFocuser.d.ts.map +1 -0
  267. package/lib/typescript/components/extends/BoundHelper.d.ts +11 -0
  268. package/lib/typescript/components/extends/BoundHelper.d.ts.map +1 -0
  269. package/lib/typescript/components/extends/area/AreaFocusAreas.d.ts +58 -0
  270. package/lib/typescript/components/extends/area/AreaFocusAreas.d.ts.map +1 -0
  271. package/lib/typescript/components/extends/area/AreaFocusGeometryUtils.d.ts +19 -0
  272. package/lib/typescript/components/extends/area/AreaFocusGeometryUtils.d.ts.map +1 -0
  273. package/lib/typescript/components/extends/area/AreaFocusSession.d.ts +14 -0
  274. package/lib/typescript/components/extends/area/AreaFocusSession.d.ts.map +1 -0
  275. package/lib/typescript/components/extends/area/AreaFocusTypes.d.ts +40 -0
  276. package/lib/typescript/components/extends/area/AreaFocusTypes.d.ts.map +1 -0
  277. package/lib/typescript/components/internal/DefaultRoadmapStyle.d.ts +820 -0
  278. package/lib/typescript/components/internal/DefaultRoadmapStyle.d.ts.map +1 -0
  279. package/lib/typescript/components/internal/GeojsonStyleUtils.d.ts +3 -0
  280. package/lib/typescript/components/internal/GeojsonStyleUtils.d.ts.map +1 -0
  281. package/lib/typescript/index.d.ts +13 -0
  282. package/lib/typescript/index.d.ts.map +1 -0
  283. package/lib/typescript/native/Map4dMapNativeModule.d.ts +2 -0
  284. package/lib/typescript/native/Map4dMapNativeModule.d.ts.map +1 -0
  285. package/lib/typescript/native/NativeModuleResolver.d.ts +3 -0
  286. package/lib/typescript/native/NativeModuleResolver.d.ts.map +1 -0
  287. package/lib/typescript/native/ViewManagerCommand.d.ts +11 -0
  288. package/lib/typescript/native/ViewManagerCommand.d.ts.map +1 -0
  289. package/package.json +168 -152
  290. package/react-native-map4d-map.podspec +20 -20
  291. package/src/components/MFBanDoSo/constants.js +32 -0
  292. package/src/components/MFBanDoSo/helpers.js +273 -0
  293. package/src/components/MFBanDoSo/propTypes.js +14 -0
  294. package/src/components/MFBanDoSo/styles.js +316 -0
  295. package/src/components/MFBanDoSo/ui.js +230 -0
  296. package/src/components/MFBanDoSo.js +314 -124
  297. package/src/components/MFBuilding.js +160 -187
  298. package/src/components/MFCircle.js +146 -173
  299. package/src/components/MFDirectionsRenderer.js +211 -237
  300. package/src/components/MFMapView.js +458 -464
  301. package/src/components/MFMarker.js +218 -246
  302. package/src/components/MFPOI.js +157 -184
  303. package/src/components/MFPolygon.js +159 -186
  304. package/src/components/MFPolyline.js +145 -172
  305. package/src/components/MFTileOverlay.js +45 -45
  306. package/src/components/Map4dMapView.tsx +26 -26
  307. package/src/components/extends/AreaFocusManager.js +196 -196
  308. package/src/components/extends/AreaFocuser.js +61 -61
  309. package/src/components/extends/BoundHelper.js +31 -31
  310. package/src/components/extends/area/AreaFocusAreas.js +164 -164
  311. package/src/components/extends/area/AreaFocusGeometryUtils.js +164 -164
  312. package/src/components/extends/area/AreaFocusSession.js +100 -100
  313. package/src/components/extends/area/AreaFocusTypes.js +36 -36
  314. package/src/components/internal/DefaultRoadmapStyle.js +3365 -3365
  315. package/src/components/internal/GeojsonStyleUtils.js +146 -143
  316. package/src/index.js +25 -25
  317. package/src/native/Map4dMapNativeModule.js +3 -0
  318. package/src/native/NativeModuleResolver.js +33 -0
  319. package/src/native/ViewManagerCommand.js +82 -0
  320. package/src/specs/NativeMap4dMap.js +12 -0
  321. package/ios/Map4dMapViewManager.m +0 -34
@@ -1,509 +1,424 @@
1
- //
2
- // RMFMapViewManager.m
3
- // Map4dMap
4
- //
5
- // Created by Huy Dang on 4/27/20.
6
- // Copyright © 2020 IOTLink. All rights reserved.
7
- //
8
-
9
- #import "RMFMapViewManager.h"
10
- #import "RMFMapView.h"
11
- #import "RMFMarker.h"
12
- #import "RMFCircle.h"
13
- #import "RMFPolyline.h"
14
- #import "RMFPolygon.h"
15
- #import "RMFPOI.h"
16
- #import "RMFBuilding.h"
17
- #import "RMFDirectionsRenderer.h"
18
- #import <Foundation/Foundation.h>
19
- #import <React/RCTLog.h>
20
- #import <React/RCTBridge.h>
21
- #import <React/RCTUIManager.h>
22
- #import <React/RCTConvert+CoreLocation.h>
23
- #import "RCTConvert+Map4dMap.h"
24
- #import "RMFEventResponse.h"
25
-
26
- @interface RMFMapViewManager () <MFMapViewDelegate>
27
-
28
- @end
29
-
30
- @implementation RMFMapViewManager
31
-
32
- RCT_EXPORT_MODULE(RMFMapView)
33
-
34
- - (UIView *)view {
35
- RMFMapView * rMap = [[RMFMapView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
36
- // RMFMapView * rMap = [[RMFMapView alloc] init];
37
- // [rMap setMyLocationEnabled:true];
38
- rMap.delegate = self;
39
- return rMap;
40
- }
41
-
42
- RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTBubblingEventBlock)
43
- //RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTBubblingEventBlock)
44
- //RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTBubblingEventBlock)
45
- RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
46
- //RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
47
- //RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTBubblingEventBlock)
48
- //RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTBubblingEventBlock)
49
- //RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock)
50
- //RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
51
- //RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
52
- //RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
53
- RCT_EXPORT_VIEW_PROPERTY(onPoiPress, RCTDirectEventBlock)
54
- RCT_EXPORT_VIEW_PROPERTY(onBuildingPress, RCTDirectEventBlock)
55
- RCT_EXPORT_VIEW_PROPERTY(onPlacePress, RCTDirectEventBlock)
56
- RCT_EXPORT_VIEW_PROPERTY(onDataSourceFeaturePress, RCTDirectEventBlock)
57
- //RCT_EXPORT_VIEW_PROPERTY(onIndoorLevelActivated, RCTDirectEventBlock)
58
- //RCT_EXPORT_VIEW_PROPERTY(onIndoorBuildingFocused, RCTDirectEventBlock)
59
- RCT_EXPORT_VIEW_PROPERTY(onCameraIdle, RCTDirectEventBlock)
60
- RCT_EXPORT_VIEW_PROPERTY(onCameraMove, RCTDirectEventBlock)
61
- RCT_EXPORT_VIEW_PROPERTY(onCameraMoveStart, RCTDirectEventBlock)
62
- RCT_EXPORT_VIEW_PROPERTY(onMyLocationButtonPress, RCTDirectEventBlock)
63
-
64
- RCT_REMAP_VIEW_PROPERTY(mapID, mapIdProp, NSString)
65
- RCT_REMAP_VIEW_PROPERTY(camera, cameraProp, MFCameraPosition)
66
- RCT_REMAP_VIEW_PROPERTY(mapType, mapTypeProp, NSString)
67
- RCT_EXPORT_VIEW_PROPERTY(showsBuildings, BOOL)
68
- RCT_EXPORT_VIEW_PROPERTY(showsPOIs, BOOL)
69
- RCT_EXPORT_VIEW_PROPERTY(showsMyLocation, BOOL)
70
- RCT_EXPORT_VIEW_PROPERTY(showsMyLocationButton, BOOL)
71
-
72
- RCT_EXPORT_VIEW_PROPERTY(zoomGesturesEnabled, BOOL)
73
- RCT_EXPORT_VIEW_PROPERTY(scrollGesturesEnabled, BOOL)
74
- RCT_EXPORT_VIEW_PROPERTY(rotateGesturesEnabled, BOOL)
75
- RCT_EXPORT_VIEW_PROPERTY(tiltGesturesEnabled, BOOL)
76
-
77
-
78
- RCT_EXPORT_METHOD(getCamera:(nonnull NSNumber *)reactTag
79
- resolver: (RCTPromiseResolveBlock)resolve
80
- rejecter:(RCTPromiseRejectBlock)reject)
81
- {
82
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
83
- id view = viewRegistry[reactTag];
84
- if (![view isKindOfClass:[RMFMapView class]]) {
85
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
86
- } else {
87
- RMFMapView *mapView = (RMFMapView *)view;
88
- MFCameraPosition *camera = [mapView camera];
89
- resolve([RMFEventResponse fromCameraPosition:camera]);
90
- }
91
- }];
92
- }
93
-
94
- RCT_EXPORT_METHOD(getBounds:(nonnull NSNumber *)reactTag
95
- resolver: (RCTPromiseResolveBlock)resolve
96
- rejecter:(RCTPromiseRejectBlock)reject)
97
- {
98
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
99
- id view = viewRegistry[reactTag];
100
- if (![view isKindOfClass:[RMFMapView class]]) {
101
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
102
- } else {
103
- RMFMapView *mapView = (RMFMapView *)view;
104
- MFCoordinateBounds* bounds = [mapView getBounds];
105
- resolve([RMFEventResponse fromCoordinateBounds:bounds]);
106
- }
107
- }];
108
- }
109
-
110
- RCT_EXPORT_METHOD(cameraForBounds:(nonnull NSNumber *)reactTag
111
- withData:(id)json
112
- resolver: (RCTPromiseResolveBlock)resolve
113
- rejecter:(RCTPromiseRejectBlock)reject)
114
- {
115
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
116
- id view = viewRegistry[reactTag];
117
- if (![view isKindOfClass:[RMFMapView class]]) {
118
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
119
- } else {
120
- RMFMapView *mapView = (RMFMapView *)view;
121
- MFCameraPosition *camera = nil;
122
- id data = [RCTConvert NSDictionary:json];
123
- if (data[@"bounds"]) {
124
- MFCoordinateBounds* bounds = [RCTConvert MFCoordinateBounds:data[@"bounds"]];
125
- if (data[@"padding"]) {
126
- UIEdgeInsets insets = [RCTConvert UIEdgeInsets:data[@"padding"]];
127
- camera = [mapView cameraForBounds:bounds insets:insets];
128
- }
129
- else {
130
- camera = [mapView cameraForBounds:bounds];
131
- }
132
- }
133
- resolve([RMFEventResponse fromCameraPosition:camera]);
134
- }
135
- }];
136
- }
137
-
138
- RCT_EXPORT_METHOD(fitBounds:(nonnull NSNumber *)reactTag
139
- withData:(id)json)
140
- {
141
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
142
- id view = viewRegistry[reactTag];
143
- if (![view isKindOfClass:[RMFMapView class]]) {
144
- RCTLogError(@"Invalid view returned from registry, expecting RMFMapView, got: %@", view);
145
- } else {
146
- RMFMapView *mapView = (RMFMapView *)view;
147
- MFCameraPosition* camera = nil;
148
- id data = [RCTConvert NSDictionary:json];
149
- if (data[@"bounds"]) {
150
- MFCoordinateBounds* bounds = [RCTConvert MFCoordinateBounds:data[@"bounds"]];
151
- if (data[@"padding"]) {
152
- UIEdgeInsets insets = [RCTConvert UIEdgeInsets:data[@"padding"]];
153
- camera = [mapView cameraForBounds:bounds insets:insets];
154
- }
155
- else {
156
- camera = [mapView cameraForBounds:bounds];
157
- }
158
- [mapView moveCamera:[MFCameraUpdate setCamera:camera]];
159
- }
160
- }
161
- }];
162
- }
163
-
164
- RCT_EXPORT_METHOD(pointForCoordinate:(nonnull NSNumber *)reactTag
165
- withCoordinate:(id)json
166
- resolver: (RCTPromiseResolveBlock)resolve
167
- rejecter:(RCTPromiseRejectBlock)reject)
168
- {
169
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
170
- id view = viewRegistry[reactTag];
171
- if (![view isKindOfClass:[RMFMapView class]]) {
172
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
173
- } else {
174
- RMFMapView *mapView = (RMFMapView *)view;
175
- CGPoint point = [mapView.projection pointForCoordinate:[RCTConvert CLLocationCoordinate2D:json]];
176
- resolve([RMFEventResponse fromCGPoint:point]);
177
- }
178
- }];
179
- }
180
-
181
- RCT_EXPORT_METHOD(coordinateForPoint:(nonnull NSNumber *)reactTag
182
- withPoint:(id)json
183
- resolver: (RCTPromiseResolveBlock)resolve
184
- rejecter:(RCTPromiseRejectBlock)reject)
185
- {
186
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
187
- id view = viewRegistry[reactTag];
188
- if (![view isKindOfClass:[RMFMapView class]]) {
189
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
190
- } else {
191
- RMFMapView *mapView = (RMFMapView *)view;
192
- CLLocationCoordinate2D coordinate = [mapView.projection coordinateForPoint:[RCTConvert CGPoint:json]];
193
- resolve([RMFEventResponse fromCoordinate:coordinate]);
194
- }
195
- }];
196
- }
197
-
198
- RCT_EXPORT_METHOD(animateCamera:(nonnull NSNumber *)reactTag
199
- withCamera:(id)json) {
200
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
201
- id view = viewRegistry[reactTag];
202
- if (![view isKindOfClass:[RMFMapView class]]) {
203
- RCTLogError(@"Invalid view returned from registry, expecting RMFMapView, got: %@", view);
204
- } else {
205
- RMFMapView *mapView = (RMFMapView *)view;
206
- [mapView animateCamera:[MFCameraUpdate setCamera:[RCTConvert MFCameraPosition:json withDefaultCamera:mapView.camera]]];
207
- }
208
- }];
209
- }
210
-
211
- RCT_EXPORT_METHOD(moveCamera:(nonnull NSNumber *)reactTag
212
- withCamera:(id)json) {
213
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
214
- id view = viewRegistry[reactTag];
215
- if (![view isKindOfClass:[RMFMapView class]]) {
216
- RCTLogError(@"Invalid view returned from registry, expecting RMFMapView, got: %@", view);
217
- } else {
218
- RMFMapView *mapView = (RMFMapView *)view;
219
- [mapView moveCamera:[MFCameraUpdate setCamera:[RCTConvert MFCameraPosition:json withDefaultCamera:mapView.camera]]];
220
- }
221
- }];
222
- }
223
-
224
- RCT_EXPORT_METHOD(showsMyLocationButton:(nonnull NSNumber *)reactTag
225
- enable:(BOOL)enable) {
226
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
227
- id view = viewRegistry[reactTag];
228
- if (![view isKindOfClass:[RMFMapView class]]) {
229
-
230
- } else {
231
- RMFMapView *mapView = (RMFMapView *)view;
232
- mapView.settings.myLocationButton = enable;
233
- }
234
- }];
235
- }
236
-
237
- RCT_EXPORT_METHOD(setMyLocationEnabled:(nonnull NSNumber *)reactTag
238
- enable:(BOOL)enable) {
239
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
240
- id view = viewRegistry[reactTag];
241
- if (![view isKindOfClass:[RMFMapView class]]) {
242
-
243
- } else {
244
- RMFMapView *mapView = (RMFMapView *)view;
245
- [mapView setMyLocationEnabled:enable];
246
- }
247
- }];
248
- }
249
-
250
- RCT_EXPORT_METHOD(getMyLocation:(nonnull NSNumber *)reactTag
251
- resolver: (RCTPromiseResolveBlock)resolve
252
- rejecter:(RCTPromiseRejectBlock)reject)
253
- {
254
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
255
- id view = viewRegistry[reactTag];
256
- if (![view isKindOfClass:[RMFMapView class]]) {
257
- reject(@"Invalid argument", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], NULL);
258
- } else {
259
- RMFMapView *mapView = (RMFMapView *)view;
260
- CLLocation *location = [mapView getMyLocation];
261
- resolve([RMFEventResponse fromCLLocation:location]);
262
- }
263
- }];
264
- }
265
-
266
- RCT_EXPORT_METHOD(setPOIsEnabled:(nonnull NSNumber *)reactTag
267
- enable:(BOOL)enable) {
268
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
269
- id view = viewRegistry[reactTag];
270
- if (![view isKindOfClass:[RMFMapView class]]) {
271
-
272
- } else {
273
- RMFMapView *mapView = (RMFMapView *)view;
274
- [mapView setPOIsEnabled:enable];
275
- }
276
- }];
277
- }
278
-
279
- RCT_EXPORT_METHOD(setTime:(nonnull NSNumber *)reactTag
280
- withTime:(id)json) {
281
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
282
- id view = viewRegistry[reactTag];
283
- if (![view isKindOfClass:[RMFMapView class]]) {
284
-
285
- } else {
286
- RMFMapView *mapView = (RMFMapView *)view;
287
- NSDate * date = [RCTConvert NSDate:json];
288
- if (date) {
289
- [mapView setTime:date];
290
- }
291
- }
292
- }];
293
- }
294
-
295
- RCT_EXPORT_METHOD(setMapStyle:(nonnull NSNumber *)reactTag
296
- withStyle:(NSString *)style) {
297
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
298
- id view = viewRegistry[reactTag];
299
- if (![view isKindOfClass:[RMFMapView class]]) {
300
-
301
- } else {
302
- RMFMapView *mapView = (RMFMapView *)view;
303
- if (style.length > 0) {
304
- MFMapStyle *mapStyle = [[MFMapStyle alloc] initWithJSONString:style];
305
- [mapView setMapStyle:mapStyle];
306
- }
307
- }
308
- }];
309
- }
310
-
311
-
312
- RCT_EXPORT_METHOD(setZoomGesturesEnabled:(nonnull NSNumber *)reactTag
313
- enable:(BOOL)enable) {
314
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
315
- id view = viewRegistry[reactTag];
316
- if (![view isKindOfClass:[RMFMapView class]]) {
317
-
318
- } else {
319
- RMFMapView *mapView = (RMFMapView *)view;
320
- mapView.settings.zoomGestures = enable;
321
- }
322
- }];
323
- }
324
-
325
- RCT_EXPORT_METHOD(setScrollGesturesEnabled:(nonnull NSNumber *)reactTag
326
- enable:(BOOL)enable) {
327
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
328
- id view = viewRegistry[reactTag];
329
- if (![view isKindOfClass:[RMFMapView class]]) {
330
-
331
- } else {
332
- RMFMapView *mapView = (RMFMapView *)view;
333
- mapView.settings.scrollGestures = enable;
334
- }
335
- }];
336
- }
337
-
338
- RCT_EXPORT_METHOD(setRotateGesturesEnabled:(nonnull NSNumber *)reactTag
339
- enable:(BOOL)enable) {
340
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
341
- id view = viewRegistry[reactTag];
342
- if (![view isKindOfClass:[RMFMapView class]]) {
343
-
344
- } else {
345
- RMFMapView *mapView = (RMFMapView *)view;
346
- mapView.settings.rotateGestures = enable;
347
- }
348
- }];
349
- }
350
-
351
- RCT_EXPORT_METHOD(setTiltGesturesEnabled:(nonnull NSNumber *)reactTag
352
- enable:(BOOL)enable) {
353
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
354
- id view = viewRegistry[reactTag];
355
- if (![view isKindOfClass:[RMFMapView class]]) {
356
-
357
- } else {
358
- RMFMapView *mapView = (RMFMapView *)view;
359
- mapView.settings.tiltGestures = enable;
360
- }
361
- }];
362
- }
363
-
364
- RCT_EXPORT_METHOD(setAllGesturesEnabled:(nonnull NSNumber *)reactTag
365
- enable:(BOOL)enable) {
366
- [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
367
- id view = viewRegistry[reactTag];
368
- if (![view isKindOfClass:[RMFMapView class]]) {
369
-
370
- } else {
371
- RMFMapView *mapView = (RMFMapView *)view;
372
- [mapView.settings setAllGesturesEnabled:enable];
373
- }
374
- }];
375
- }
376
-
377
-
378
- // Delegate
379
- - (BOOL)mapview:(MFMapView *)mapView didTapMarker:(MFMarker *)marker {
380
- RMFMapView* map = (RMFMapView*)mapView;
381
-
382
- RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
383
- [rMarker.reactMarker didTapAtPixel:map.lastTapPixel];
384
- return NO;
385
- }
386
-
387
- - (void)mapview:(MFMapView *)mapView didBeginDraggingMarker:(MFMarker *)marker {
388
- if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
389
- RMFMapView* map = (RMFMapView*)mapView;
390
- RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
391
- [rMarker.reactMarker didBeginDraggingMarkerAtPixel:map.lastLongPressPixel];
392
- }
393
- }
394
-
395
- - (void)mapview:(MFMapView *)mapView didEndDraggingMarker:(MFMarker *)marker {
396
- if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
397
- RMFMapView* map = (RMFMapView*)mapView;
398
- RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
399
- [rMarker.reactMarker didEndDraggingMarkerAtPixel:map.lastLongPressPixel];
400
- }
401
- }
402
-
403
- - (void)mapview:(MFMapView *)mapView didDragMarker:(MFMarker *)marker {
404
- if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
405
- RMFMapView* map = (RMFMapView*)mapView;
406
- RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
407
- [rMarker.reactMarker didDragMarkerAtPixel:map.lastPanPixel];
408
- }
409
- }
410
-
411
- - (void)mapview:(MFMapView *)mapView didTapInfoWindowOfMarker:(MFMarker *)marker {
412
- RMFMapView* map = (RMFMapView*)mapView;
413
-
414
- RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
415
- [rMarker.reactMarker didTapInfoWindowAtPixel:map.lastTapPixel];
416
- }
417
-
418
- - (void)mapview:(MFMapView *)mapView didTapPolyline:(MFPolyline *)polyline {
419
- RMFMapView* map = (RMFMapView*)mapView;
420
- RMFPolylineMap4d * rPolyline = (RMFPolylineMap4d *) polyline;
421
- [rPolyline.reactPolyline didTapAtPixel:map.lastTapPixel];
422
- }
423
-
424
- - (void)mapview:(MFMapView *)mapView didTapPolygon:(MFPolygon *)polygon {
425
- RMFMapView* map = (RMFMapView*)mapView;
426
- RMFPolygonMap4d * rPolygon = (RMFPolygonMap4d*) polygon;
427
- [rPolygon.reactPolygon didTapAtPixel:map.lastTapPixel];
428
- }
429
-
430
- - (void)mapview:(MFMapView *)mapView didTapCircle:(MFCircle *)circle {
431
- RMFMapView* map = (RMFMapView*)mapView;
432
- RMFCircleMap4d * rCircle = (RMFCircleMap4d*)circle;
433
- [rCircle.reactCircle didTapAtPixel:map.lastTapPixel];
434
- }
435
-
436
- - (void)mapView: (MFMapView*) mapView willMove: (BOOL) gesture {
437
- RMFMapView* reactMapView = (RMFMapView*) mapView;
438
- [reactMapView willMove:gesture];
439
- }
440
-
441
- - (void)mapView:(MFMapView *)mapView movingCameraPosition:(MFCameraPosition *)position {
442
- RMFMapView* reactMapView = (RMFMapView*) mapView;
443
- [reactMapView movingCameraPosition:position];
444
- }
445
-
446
- //- (void)mapView:(MFMapView *)mapView didChangeCameraPosition:(MFCameraPosition *)position {
447
- //}
448
-
449
- - (void)mapView:(MFMapView *)mapView idleAtCameraPosition:(MFCameraPosition *)position {
450
- RMFMapView* reactMapView = (RMFMapView*) mapView;
451
- [reactMapView idleAtCameraPosition:position];
452
- }
453
-
454
- - (void)mapView:(MFMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate {
455
- RMFMapView* map = (RMFMapView*)mapView;
456
- [map didTapAtCoordinate:coordinate];
457
- }
458
-
459
- - (void)mapView:(MFMapView *)mapView didTapPOI:(MFPOI *)poi {
460
- RMFMapView* map = (RMFMapView*)mapView;
461
- RMFPOIMap4d* rPOI = (RMFPOIMap4d*) poi;
462
- [rPOI.reactPOI didTapAtPixel:map.lastTapPixel];
463
- }
464
-
465
- - (void)mapView:(MFMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location {
466
- RMFMapView* reactMapView = (RMFMapView*) mapView;
467
- [reactMapView didTapPOIWithPlaceID:placeID name:name location:location];
468
- }
469
-
470
- - (void)mapView:(MFMapView *)mapView didTapBuilding:(MFBuilding *)building {
471
- RMFMapView* map = (RMFMapView*)mapView;
472
- RMFBuildingMap4d *rBuilding = (RMFBuildingMap4d *) building;
473
- [rBuilding.reactBuilding didTapAtPixel:map.lastTapPixel];
474
- }
475
-
476
- - (void)mapView:(MFMapView *)mapView didTapBuildingWithBuildingID:(NSString *)buildingID name:(NSString *)name location:(CLLocationCoordinate2D)location {
477
- RMFMapView* reactMapView = (RMFMapView*) mapView;
478
- [reactMapView didTapBuildingWithBuildingID:buildingID name:name location:location];
479
- }
480
-
481
- - (void)mapView:(MFMapView *)mapView didTapPlaceWithName:(NSString *)name location:(CLLocationCoordinate2D)location {
482
- RMFMapView* reactMapView = (RMFMapView*) mapView;
483
- [reactMapView didTapPlaceWithName:name location:location];
484
- }
485
-
486
- - (void)mapView:(MFMapView *)mapView didTapDataSourceFeature:(MFDataSourceFeature *)feature location:(CLLocationCoordinate2D)location {
487
- RMFMapView* reactMapView = (RMFMapView*) mapView;
488
- [reactMapView didTapDataSourceFeature:feature location:location];
489
- }
490
-
491
- - (void)mapView:(MFMapView *)mapView didTapDirectionsRenderer:(MFDirectionsRenderer *)renderer routeIndex:(NSUInteger)routeIndex {
492
- RMFMapView* map = (RMFMapView*)mapView;
493
- RMFDirectionsRendererMap4d* rRenderer = (RMFDirectionsRendererMap4d*)renderer;
494
- [rRenderer.reactRenderer didTapAtPixel:map.lastTapPixel withRouteIndex:routeIndex];
495
- }
496
-
497
- //- (void)mapView:(MFMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location {
498
- //}
499
-
500
- - (BOOL)didTapMyLocationButtonForMapView:(MFMapView *)mapView {
501
- RMFMapView* reactMapView = (RMFMapView*) mapView;
502
- return [reactMapView didTapMyLocationButton];
503
- }
504
-
505
- - (UIView *)mapView:(MFMapView *)mapView markerInfoWindow:(MFMarker *)marker {
506
- return nil;
507
- }
508
-
509
- @end
1
+ //
2
+ // RMFMapViewManager.m
3
+ // Map4dMap
4
+ //
5
+ // Created by Huy Dang on 4/27/20.
6
+ // Copyright © 2020 IOTLink. All rights reserved.
7
+ //
8
+
9
+ #import "RMFMapViewManager.h"
10
+ #import "RMFMapView.h"
11
+ #import "RMFMarker.h"
12
+ #import "RMFCircle.h"
13
+ #import "RMFPolyline.h"
14
+ #import "RMFPolygon.h"
15
+ #import "RMFPOI.h"
16
+ #import "RMFBuilding.h"
17
+ #import "RMFDirectionsRenderer.h"
18
+ #import <Foundation/Foundation.h>
19
+ #import <React/RCTLog.h>
20
+ #import <React/RCTBridge.h>
21
+ #import <React/RCTUIManager.h>
22
+ #import <React/RCTConvert+CoreLocation.h>
23
+ #import "RCTConvert+Map4dMap.h"
24
+ #import "RMFEventResponse.h"
25
+
26
+ @interface RMFMapViewManager () <MFMapViewDelegate>
27
+
28
+ @end
29
+
30
+ @implementation RMFMapViewManager
31
+
32
+ RCT_EXPORT_MODULE(RMFMapView)
33
+
34
+ - (void)withMapViewForTag:(nonnull NSNumber *)reactTag
35
+ rejecter:(RCTPromiseRejectBlock)reject
36
+ handler:(void (^)(RMFMapView *mapView))handler
37
+ {
38
+ RCTUIManager *uiManager = self.bridge.uiManager;
39
+ if (uiManager == nil) {
40
+ if (reject) {
41
+ reject(@"E_UI_MANAGER_UNAVAILABLE", @"UIManager is unavailable on iOS runtime", nil);
42
+ } else {
43
+ RCTLogError(@"UIManager is unavailable on iOS runtime");
44
+ }
45
+ return;
46
+ }
47
+
48
+ [uiManager addUIBlock:^(__unused RCTUIManager *manager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
49
+ id view = viewRegistry[reactTag];
50
+ if (![view isKindOfClass:[RMFMapView class]]) {
51
+ if (reject) {
52
+ reject(@"E_INVALID_VIEW", [NSString stringWithFormat:@"Invalid view returned from registry, expecting RMFMapView, got: %@", view], nil);
53
+ } else {
54
+ RCTLogError(@"Invalid view returned from registry, expecting RMFMapView, got: %@", view);
55
+ }
56
+ return;
57
+ }
58
+
59
+ handler((RMFMapView *)view);
60
+ }];
61
+ }
62
+
63
+ - (UIView *)view {
64
+ RMFMapView * rMap = [[RMFMapView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
65
+ // RMFMapView * rMap = [[RMFMapView alloc] init];
66
+ // [rMap setMyLocationEnabled:true];
67
+ rMap.delegate = self;
68
+ return rMap;
69
+ }
70
+
71
+ RCT_EXPORT_VIEW_PROPERTY(onMapReady, RCTBubblingEventBlock)
72
+ //RCT_EXPORT_VIEW_PROPERTY(onMapLoaded, RCTBubblingEventBlock)
73
+ //RCT_EXPORT_VIEW_PROPERTY(onKmlReady, RCTBubblingEventBlock)
74
+ RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock)
75
+ //RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock)
76
+ //RCT_EXPORT_VIEW_PROPERTY(onPanDrag, RCTBubblingEventBlock)
77
+ //RCT_EXPORT_VIEW_PROPERTY(onUserLocationChange, RCTBubblingEventBlock)
78
+ //RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock)
79
+ //RCT_EXPORT_VIEW_PROPERTY(onMarkerPress, RCTDirectEventBlock)
80
+ //RCT_EXPORT_VIEW_PROPERTY(onRegionChange, RCTDirectEventBlock)
81
+ //RCT_EXPORT_VIEW_PROPERTY(onRegionChangeComplete, RCTDirectEventBlock)
82
+ RCT_EXPORT_VIEW_PROPERTY(onPoiPress, RCTDirectEventBlock)
83
+ RCT_EXPORT_VIEW_PROPERTY(onBuildingPress, RCTDirectEventBlock)
84
+ RCT_EXPORT_VIEW_PROPERTY(onPlacePress, RCTDirectEventBlock)
85
+ RCT_EXPORT_VIEW_PROPERTY(onDataSourceFeaturePress, RCTDirectEventBlock)
86
+ //RCT_EXPORT_VIEW_PROPERTY(onIndoorLevelActivated, RCTDirectEventBlock)
87
+ //RCT_EXPORT_VIEW_PROPERTY(onIndoorBuildingFocused, RCTDirectEventBlock)
88
+ RCT_EXPORT_VIEW_PROPERTY(onCameraIdle, RCTDirectEventBlock)
89
+ RCT_EXPORT_VIEW_PROPERTY(onCameraMove, RCTDirectEventBlock)
90
+ RCT_EXPORT_VIEW_PROPERTY(onCameraMoveStart, RCTDirectEventBlock)
91
+ RCT_EXPORT_VIEW_PROPERTY(onMyLocationButtonPress, RCTDirectEventBlock)
92
+
93
+ RCT_REMAP_VIEW_PROPERTY(mapID, mapIdProp, NSString)
94
+ RCT_REMAP_VIEW_PROPERTY(camera, cameraProp, MFCameraPosition)
95
+ RCT_REMAP_VIEW_PROPERTY(mapType, mapTypeProp, NSString)
96
+ RCT_EXPORT_VIEW_PROPERTY(showsBuildings, BOOL)
97
+ RCT_EXPORT_VIEW_PROPERTY(showsPOIs, BOOL)
98
+ RCT_EXPORT_VIEW_PROPERTY(showsMyLocation, BOOL)
99
+ RCT_EXPORT_VIEW_PROPERTY(showsMyLocationButton, BOOL)
100
+
101
+ RCT_EXPORT_VIEW_PROPERTY(zoomGesturesEnabled, BOOL)
102
+ RCT_EXPORT_VIEW_PROPERTY(scrollGesturesEnabled, BOOL)
103
+ RCT_EXPORT_VIEW_PROPERTY(rotateGesturesEnabled, BOOL)
104
+ RCT_EXPORT_VIEW_PROPERTY(tiltGesturesEnabled, BOOL)
105
+
106
+
107
+ RCT_EXPORT_METHOD(getCamera:(nonnull NSNumber *)reactTag
108
+ resolver: (RCTPromiseResolveBlock)resolve
109
+ rejecter:(RCTPromiseRejectBlock)reject)
110
+ {
111
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
112
+ MFCameraPosition *camera = [mapView camera];
113
+ resolve([RMFEventResponse fromCameraPosition:camera]);
114
+ }];
115
+ }
116
+
117
+ RCT_EXPORT_METHOD(getBounds:(nonnull NSNumber *)reactTag
118
+ resolver: (RCTPromiseResolveBlock)resolve
119
+ rejecter:(RCTPromiseRejectBlock)reject)
120
+ {
121
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
122
+ MFCoordinateBounds* bounds = [mapView getBounds];
123
+ resolve([RMFEventResponse fromCoordinateBounds:bounds]);
124
+ }];
125
+ }
126
+
127
+ RCT_EXPORT_METHOD(cameraForBounds:(nonnull NSNumber *)reactTag
128
+ withData:(id)json
129
+ resolver: (RCTPromiseResolveBlock)resolve
130
+ rejecter:(RCTPromiseRejectBlock)reject)
131
+ {
132
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
133
+ MFCameraPosition *camera = nil;
134
+ id data = [RCTConvert NSDictionary:json];
135
+ if (data[@"bounds"]) {
136
+ MFCoordinateBounds* bounds = [RCTConvert MFCoordinateBounds:data[@"bounds"]];
137
+ if (data[@"padding"]) {
138
+ UIEdgeInsets insets = [RCTConvert UIEdgeInsets:data[@"padding"]];
139
+ camera = [mapView cameraForBounds:bounds insets:insets];
140
+ }
141
+ else {
142
+ camera = [mapView cameraForBounds:bounds];
143
+ }
144
+ }
145
+ resolve([RMFEventResponse fromCameraPosition:camera]);
146
+ }];
147
+ }
148
+
149
+ RCT_EXPORT_METHOD(fitBounds:(nonnull NSNumber *)reactTag
150
+ withData:(id)json)
151
+ {
152
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
153
+ MFCameraPosition* camera = nil;
154
+ id data = [RCTConvert NSDictionary:json];
155
+ if (data[@"bounds"]) {
156
+ MFCoordinateBounds* bounds = [RCTConvert MFCoordinateBounds:data[@"bounds"]];
157
+ if (data[@"padding"]) {
158
+ UIEdgeInsets insets = [RCTConvert UIEdgeInsets:data[@"padding"]];
159
+ camera = [mapView cameraForBounds:bounds insets:insets];
160
+ }
161
+ else {
162
+ camera = [mapView cameraForBounds:bounds];
163
+ }
164
+ [mapView moveCamera:[MFCameraUpdate setCamera:camera]];
165
+ }
166
+ }];
167
+ }
168
+
169
+ RCT_EXPORT_METHOD(pointForCoordinate:(nonnull NSNumber *)reactTag
170
+ withCoordinate:(id)json
171
+ resolver: (RCTPromiseResolveBlock)resolve
172
+ rejecter:(RCTPromiseRejectBlock)reject)
173
+ {
174
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
175
+ CGPoint point = [mapView.projection pointForCoordinate:[RCTConvert CLLocationCoordinate2D:json]];
176
+ resolve([RMFEventResponse fromCGPoint:point]);
177
+ }];
178
+ }
179
+
180
+ RCT_EXPORT_METHOD(coordinateForPoint:(nonnull NSNumber *)reactTag
181
+ withPoint:(id)json
182
+ resolver: (RCTPromiseResolveBlock)resolve
183
+ rejecter:(RCTPromiseRejectBlock)reject)
184
+ {
185
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
186
+ CLLocationCoordinate2D coordinate = [mapView.projection coordinateForPoint:[RCTConvert CGPoint:json]];
187
+ resolve([RMFEventResponse fromCoordinate:coordinate]);
188
+ }];
189
+ }
190
+
191
+ RCT_EXPORT_METHOD(animateCamera:(nonnull NSNumber *)reactTag
192
+ withCamera:(id)json) {
193
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
194
+ [mapView animateCamera:[MFCameraUpdate setCamera:[RCTConvert MFCameraPosition:json withDefaultCamera:mapView.camera]]];
195
+ }];
196
+ }
197
+
198
+ RCT_EXPORT_METHOD(moveCamera:(nonnull NSNumber *)reactTag
199
+ withCamera:(id)json) {
200
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
201
+ [mapView moveCamera:[MFCameraUpdate setCamera:[RCTConvert MFCameraPosition:json withDefaultCamera:mapView.camera]]];
202
+ }];
203
+ }
204
+
205
+ RCT_EXPORT_METHOD(showsMyLocationButton:(nonnull NSNumber *)reactTag
206
+ enable:(BOOL)enable) {
207
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
208
+ mapView.settings.myLocationButton = enable;
209
+ }];
210
+ }
211
+
212
+ RCT_EXPORT_METHOD(setMyLocationEnabled:(nonnull NSNumber *)reactTag
213
+ enable:(BOOL)enable) {
214
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
215
+ [mapView setMyLocationEnabled:enable];
216
+ }];
217
+ }
218
+
219
+ RCT_EXPORT_METHOD(getMyLocation:(nonnull NSNumber *)reactTag
220
+ resolver: (RCTPromiseResolveBlock)resolve
221
+ rejecter:(RCTPromiseRejectBlock)reject)
222
+ {
223
+ [self withMapViewForTag:reactTag rejecter:reject handler:^(RMFMapView *mapView) {
224
+ CLLocation *location = [mapView getMyLocation];
225
+ resolve([RMFEventResponse fromCLLocation:location]);
226
+ }];
227
+ }
228
+
229
+ RCT_EXPORT_METHOD(setPOIsEnabled:(nonnull NSNumber *)reactTag
230
+ enable:(BOOL)enable) {
231
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
232
+ [mapView setPOIsEnabled:enable];
233
+ }];
234
+ }
235
+
236
+ RCT_EXPORT_METHOD(setTime:(nonnull NSNumber *)reactTag
237
+ withTime:(id)json) {
238
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
239
+ NSDate * date = [RCTConvert NSDate:json];
240
+ if (date) {
241
+ [mapView setTime:date];
242
+ }
243
+ }];
244
+ }
245
+
246
+ RCT_EXPORT_METHOD(setMapStyle:(nonnull NSNumber *)reactTag
247
+ withStyle:(NSString *)style) {
248
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
249
+ if (style.length > 0) {
250
+ MFMapStyle *mapStyle = [[MFMapStyle alloc] initWithJSONString:style];
251
+ [mapView setMapStyle:mapStyle];
252
+ }
253
+ }];
254
+ }
255
+
256
+
257
+ RCT_EXPORT_METHOD(setZoomGesturesEnabled:(nonnull NSNumber *)reactTag
258
+ enable:(BOOL)enable) {
259
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
260
+ mapView.settings.zoomGestures = enable;
261
+ }];
262
+ }
263
+
264
+ RCT_EXPORT_METHOD(setScrollGesturesEnabled:(nonnull NSNumber *)reactTag
265
+ enable:(BOOL)enable) {
266
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
267
+ mapView.settings.scrollGestures = enable;
268
+ }];
269
+ }
270
+
271
+ RCT_EXPORT_METHOD(setRotateGesturesEnabled:(nonnull NSNumber *)reactTag
272
+ enable:(BOOL)enable) {
273
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
274
+ mapView.settings.rotateGestures = enable;
275
+ }];
276
+ }
277
+
278
+ RCT_EXPORT_METHOD(setTiltGesturesEnabled:(nonnull NSNumber *)reactTag
279
+ enable:(BOOL)enable) {
280
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
281
+ mapView.settings.tiltGestures = enable;
282
+ }];
283
+ }
284
+
285
+ RCT_EXPORT_METHOD(setAllGesturesEnabled:(nonnull NSNumber *)reactTag
286
+ enable:(BOOL)enable) {
287
+ [self withMapViewForTag:reactTag rejecter:nil handler:^(RMFMapView *mapView) {
288
+ [mapView.settings setAllGesturesEnabled:enable];
289
+ }];
290
+ }
291
+
292
+
293
+ // Delegate
294
+ - (BOOL)mapview:(MFMapView *)mapView didTapMarker:(MFMarker *)marker {
295
+ RMFMapView* map = (RMFMapView*)mapView;
296
+
297
+ RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
298
+ [rMarker.reactMarker didTapAtPixel:map.lastTapPixel];
299
+ return NO;
300
+ }
301
+
302
+ - (void)mapview:(MFMapView *)mapView didBeginDraggingMarker:(MFMarker *)marker {
303
+ if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
304
+ RMFMapView* map = (RMFMapView*)mapView;
305
+ RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
306
+ [rMarker.reactMarker didBeginDraggingMarkerAtPixel:map.lastLongPressPixel];
307
+ }
308
+ }
309
+
310
+ - (void)mapview:(MFMapView *)mapView didEndDraggingMarker:(MFMarker *)marker {
311
+ if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
312
+ RMFMapView* map = (RMFMapView*)mapView;
313
+ RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
314
+ [rMarker.reactMarker didEndDraggingMarkerAtPixel:map.lastLongPressPixel];
315
+ }
316
+ }
317
+
318
+ - (void)mapview:(MFMapView *)mapView didDragMarker:(MFMarker *)marker {
319
+ if ([marker isKindOfClass:[RMFMarkerMap4d class]]) {
320
+ RMFMapView* map = (RMFMapView*)mapView;
321
+ RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
322
+ [rMarker.reactMarker didDragMarkerAtPixel:map.lastPanPixel];
323
+ }
324
+ }
325
+
326
+ - (void)mapview:(MFMapView *)mapView didTapInfoWindowOfMarker:(MFMarker *)marker {
327
+ RMFMapView* map = (RMFMapView*)mapView;
328
+
329
+ RMFMarkerMap4d * rMarker = (RMFMarkerMap4d *) marker;
330
+ [rMarker.reactMarker didTapInfoWindowAtPixel:map.lastTapPixel];
331
+ }
332
+
333
+ - (void)mapview:(MFMapView *)mapView didTapPolyline:(MFPolyline *)polyline {
334
+ RMFMapView* map = (RMFMapView*)mapView;
335
+ RMFPolylineMap4d * rPolyline = (RMFPolylineMap4d *) polyline;
336
+ [rPolyline.reactPolyline didTapAtPixel:map.lastTapPixel];
337
+ }
338
+
339
+ - (void)mapview:(MFMapView *)mapView didTapPolygon:(MFPolygon *)polygon {
340
+ RMFMapView* map = (RMFMapView*)mapView;
341
+ RMFPolygonMap4d * rPolygon = (RMFPolygonMap4d*) polygon;
342
+ [rPolygon.reactPolygon didTapAtPixel:map.lastTapPixel];
343
+ }
344
+
345
+ - (void)mapview:(MFMapView *)mapView didTapCircle:(MFCircle *)circle {
346
+ RMFMapView* map = (RMFMapView*)mapView;
347
+ RMFCircleMap4d * rCircle = (RMFCircleMap4d*)circle;
348
+ [rCircle.reactCircle didTapAtPixel:map.lastTapPixel];
349
+ }
350
+
351
+ - (void)mapView: (MFMapView*) mapView willMove: (BOOL) gesture {
352
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
353
+ [reactMapView willMove:gesture];
354
+ }
355
+
356
+ - (void)mapView:(MFMapView *)mapView movingCameraPosition:(MFCameraPosition *)position {
357
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
358
+ [reactMapView movingCameraPosition:position];
359
+ }
360
+
361
+ //- (void)mapView:(MFMapView *)mapView didChangeCameraPosition:(MFCameraPosition *)position {
362
+ //}
363
+
364
+ - (void)mapView:(MFMapView *)mapView idleAtCameraPosition:(MFCameraPosition *)position {
365
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
366
+ [reactMapView idleAtCameraPosition:position];
367
+ }
368
+
369
+ - (void)mapView:(MFMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate {
370
+ RMFMapView* map = (RMFMapView*)mapView;
371
+ [map didTapAtCoordinate:coordinate];
372
+ }
373
+
374
+ - (void)mapView:(MFMapView *)mapView didTapPOI:(MFPOI *)poi {
375
+ RMFMapView* map = (RMFMapView*)mapView;
376
+ RMFPOIMap4d* rPOI = (RMFPOIMap4d*) poi;
377
+ [rPOI.reactPOI didTapAtPixel:map.lastTapPixel];
378
+ }
379
+
380
+ - (void)mapView:(MFMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location {
381
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
382
+ [reactMapView didTapPOIWithPlaceID:placeID name:name location:location];
383
+ }
384
+
385
+ - (void)mapView:(MFMapView *)mapView didTapBuilding:(MFBuilding *)building {
386
+ RMFMapView* map = (RMFMapView*)mapView;
387
+ RMFBuildingMap4d *rBuilding = (RMFBuildingMap4d *) building;
388
+ [rBuilding.reactBuilding didTapAtPixel:map.lastTapPixel];
389
+ }
390
+
391
+ - (void)mapView:(MFMapView *)mapView didTapBuildingWithBuildingID:(NSString *)buildingID name:(NSString *)name location:(CLLocationCoordinate2D)location {
392
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
393
+ [reactMapView didTapBuildingWithBuildingID:buildingID name:name location:location];
394
+ }
395
+
396
+ - (void)mapView:(MFMapView *)mapView didTapPlaceWithName:(NSString *)name location:(CLLocationCoordinate2D)location {
397
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
398
+ [reactMapView didTapPlaceWithName:name location:location];
399
+ }
400
+
401
+ - (void)mapView:(MFMapView *)mapView didTapDataSourceFeature:(MFDataSourceFeature *)feature location:(CLLocationCoordinate2D)location {
402
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
403
+ [reactMapView didTapDataSourceFeature:feature location:location];
404
+ }
405
+
406
+ - (void)mapView:(MFMapView *)mapView didTapDirectionsRenderer:(MFDirectionsRenderer *)renderer routeIndex:(NSUInteger)routeIndex {
407
+ RMFMapView* map = (RMFMapView*)mapView;
408
+ RMFDirectionsRendererMap4d* rRenderer = (RMFDirectionsRendererMap4d*)renderer;
409
+ [rRenderer.reactRenderer didTapAtPixel:map.lastTapPixel withRouteIndex:routeIndex];
410
+ }
411
+
412
+ //- (void)mapView:(MFMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location {
413
+ //}
414
+
415
+ - (BOOL)didTapMyLocationButtonForMapView:(MFMapView *)mapView {
416
+ RMFMapView* reactMapView = (RMFMapView*) mapView;
417
+ return [reactMapView didTapMyLocationButton];
418
+ }
419
+
420
+ - (UIView *)mapView:(MFMapView *)mapView markerInfoWindow:(MFMarker *)marker {
421
+ return nil;
422
+ }
423
+
424
+ @end