react-native-maps 1.21.0-alpha.50 → 1.21.0-alpha.52

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 (21) hide show
  1. package/android/build.gradle +2 -2
  2. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +199 -0
  3. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +71 -0
  4. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +345 -0
  5. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +25 -0
  6. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +26 -0
  7. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +25 -0
  8. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +25 -0
  9. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +25 -0
  10. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +25 -0
  11. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +25 -0
  12. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +25 -0
  13. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +24 -0
  14. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +24 -0
  15. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +43 -0
  16. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +25 -0
  17. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +14 -1
  18. package/android/src/main/java/com/rnmaps/maps/MapView.java +155 -86
  19. package/lib/MapView.js +50 -77
  20. package/lib/specs/NativeComponentMapView.js +1 -3
  21. package/package.json +1 -1
@@ -23,9 +23,12 @@ import androidx.core.content.PermissionChecker;
23
23
  import androidx.core.view.GestureDetectorCompat;
24
24
  import androidx.core.view.MotionEventCompat;
25
25
 
26
+ import com.facebook.react.common.MapBuilder;
27
+
26
28
  import com.facebook.react.bridge.Arguments;
27
29
  import com.facebook.react.bridge.LifecycleEventListener;
28
30
  import com.facebook.react.bridge.ReactApplicationContext;
31
+ import com.facebook.react.bridge.ReactContext;
29
32
  import com.facebook.react.bridge.ReadableArray;
30
33
  import com.facebook.react.bridge.ReadableMap;
31
34
  import com.facebook.react.bridge.WritableArray;
@@ -35,6 +38,7 @@ import com.facebook.react.bridge.WritableNativeMap;
35
38
  import com.facebook.react.uimanager.ThemedReactContext;
36
39
  import com.facebook.react.uimanager.UIManagerHelper;
37
40
  import com.facebook.react.uimanager.common.UIManagerType;
41
+ import com.facebook.react.uimanager.events.Event;
38
42
  import com.facebook.react.uimanager.events.EventDispatcher;
39
43
  import com.google.android.gms.maps.CameraUpdate;
40
44
  import com.google.android.gms.maps.CameraUpdateFactory;
@@ -77,6 +81,7 @@ import java.util.HashMap;
77
81
  import java.util.List;
78
82
  import java.util.Map;
79
83
  import java.util.concurrent.ExecutionException;
84
+ import com.rnmaps.fabric.event.*;
80
85
 
81
86
  public class MapView extends com.google.android.gms.maps.MapView implements GoogleMap.InfoWindowAdapter,
82
87
  GoogleMap.OnMarkerDragListener, OnMapReadyCallback, GoogleMap.OnPoiClickListener, GoogleMap.OnIndoorStateChangeListener {
@@ -128,12 +133,10 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
128
133
  private final Map<TileOverlay, MapHeatmap> heatmapMap = new HashMap<>();
129
134
  private final Map<TileOverlay, MapGradientPolyline> gradientPolylineMap = new HashMap<>();
130
135
  private final GestureDetectorCompat gestureDetector;
131
- private final MapManager manager;
132
136
  private LifecycleEventListener lifecycleListener;
133
137
  private boolean paused = false;
134
138
  private boolean destroyed = false;
135
139
  private final ThemedReactContext context;
136
- private final EventDispatcher eventDispatcher;
137
140
  private final FusedLocationSource fusedLocationSource;
138
141
 
139
142
  private final ViewAttacherGroup attacherGroup;
@@ -168,15 +171,12 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
168
171
  }
169
172
  return superContext;
170
173
  }
171
-
172
- public MapView(ThemedReactContext reactContext, ReactApplicationContext appContext,
173
- MapManager manager,
174
+ public MapView(ThemedReactContext context,
174
175
  GoogleMapOptions googleMapOptions) {
175
- super(getNonBuggyContext(reactContext, appContext), googleMapOptions);
176
-
177
- this.manager = manager;
178
- this.context = reactContext;
179
- MapsInitializer.initialize(context, this.manager.renderer, renderer -> Log.d("AirMapRenderer", renderer.toString()));
176
+ super(context, googleMapOptions);
177
+ // todo add support for legacy renderer
178
+ MapsInitializer.initialize(context, MapsInitializer.Renderer.LATEST, renderer -> Log.d("AirMapRenderer", renderer.toString()));
179
+ this.context = context;
180
180
  super.onCreate(null);
181
181
  super.onResume();
182
182
  super.getMapAsync(this);
@@ -186,41 +186,34 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
186
186
  fusedLocationSource = new FusedLocationSource(context);
187
187
 
188
188
  gestureDetector =
189
- new GestureDetectorCompat(reactContext, new GestureDetector.SimpleOnGestureListener() {
190
-
191
- @Override
192
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
193
- float distanceY) {
194
- if (handlePanDrag) {
195
- onPanDrag(e2);
196
- }
197
- return false;
198
- }
199
-
200
- @Override
201
- public boolean onDoubleTap(MotionEvent ev) {
202
- onDoublePress(ev);
203
- return false;
204
- }
205
- });
189
+ new GestureDetectorCompat(context, new GestureDetector.SimpleOnGestureListener() {
190
+
191
+ @Override
192
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
193
+ float distanceY) {
194
+ if (handlePanDrag) {
195
+ onPanDrag(e2);
196
+ }
197
+ return false;
198
+ }
199
+
200
+ @Override
201
+ public boolean onDoubleTap(MotionEvent ev) {
202
+ onDoublePress(ev);
203
+ return false;
204
+ }
205
+ });
206
206
 
207
207
  this.addOnLayoutChangeListener(new OnLayoutChangeListener() {
208
208
  @Override public void onLayoutChange(View v, int left, int top, int right, int bottom,
209
- int oldLeft, int oldTop, int oldRight, int oldBottom) {
209
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
210
210
  if (!paused) {
211
211
  MapView.this.cacheView();
212
212
  }
213
213
  }
214
214
  });
215
215
 
216
- int uiManagerType = UIManagerType.DEFAULT;
217
- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
218
- uiManagerType = UIManagerType.FABRIC;
219
- }
220
216
 
221
- eventDispatcher = UIManagerHelper
222
- .getUIManager(reactContext, uiManagerType)
223
- .getEventDispatcher();
224
217
 
225
218
  // Set up a parent view for triggering visibility in subviews that depend on it.
226
219
  // Mainly ReactImageView depends on Fresco which depends on onVisibilityChanged() event
@@ -234,6 +227,33 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
234
227
  addView(attacherGroup);
235
228
  }
236
229
 
230
+ public MapView(ThemedReactContext reactContext, ReactApplicationContext appContext,
231
+ MapManager manager,
232
+ GoogleMapOptions googleMapOptions) {
233
+ this(null, googleMapOptions);
234
+
235
+ }
236
+
237
+
238
+ @FunctionalInterface
239
+ public interface EventCreator<T extends Event> {
240
+ T create(int surfaceId, int viewId, WritableMap payload);
241
+ }
242
+ private <T extends Event> void dispatchEvent(WritableMap payload, EventCreator<T> creator) {
243
+ // Cast context to ReactContext
244
+ ReactContext reactContext = context;
245
+
246
+ // Get the event dispatcher
247
+ EventDispatcher eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, getId());
248
+
249
+ // If there is a dispatcher, create and dispatch the event
250
+ if (eventDispatcher != null) {
251
+ int surfaceId = UIManagerHelper.getSurfaceId(reactContext);
252
+ T event = creator.create(surfaceId, getId(), payload);
253
+ eventDispatcher.dispatchEvent(event);
254
+ }
255
+ }
256
+
237
257
  @Override
238
258
  public void onMapReady(@NonNull final GoogleMap map) {
239
259
  if (destroyed) {
@@ -257,8 +277,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
257
277
  this.map.setOnIndoorStateChangeListener(this);
258
278
 
259
279
  applyBridgedProps();
260
-
261
- manager.pushEvent(context, this, "onMapReady", new WritableNativeMap());
280
+ dispatchEvent(new WritableNativeMap(), OnMapReadyEvent::new);
262
281
 
263
282
  final MapView view = this;
264
283
 
@@ -278,8 +297,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
278
297
  coordinate.putBoolean("isFromMockProvider", location.isFromMockProvider());
279
298
 
280
299
  event.putMap("coordinate", coordinate);
281
-
282
- manager.pushEvent(context, view, "onUserLocationChange", event);
300
+ dispatchEvent(event, OnUserLocationChangeEvent::new);
283
301
  }
284
302
  });
285
303
 
@@ -288,15 +306,19 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
288
306
  public boolean onMarkerClick(@NonNull Marker marker) {
289
307
  MapMarker airMapMarker = getMarkerMap(marker);
290
308
 
291
- WritableMap event = makeClickEventData(marker.getPosition());
292
- event.putString("action", "marker-press");
293
- event.putString("id", airMapMarker.getIdentifier());
294
- manager.pushEvent(context, view, "onMarkerPress", event);
309
+ WritableMap eventData = makeClickEventData(marker.getPosition());
310
+ eventData.putString("action", "marker-press");
311
+ eventData.putString("id", airMapMarker.getIdentifier());
312
+
313
+ dispatchEvent(eventData, OnMarkerPressEvent::new);
314
+
315
+
316
+ eventData = makeClickEventData(marker.getPosition());
317
+ eventData.putString("action", "marker-press");
318
+ eventData.putString("id", airMapMarker.getIdentifier());
319
+
320
+ dispatchEvent(eventData, OnPressEvent::new);
295
321
 
296
- event = makeClickEventData(marker.getPosition());
297
- event.putString("action", "marker-press");
298
- event.putString("id", airMapMarker.getIdentifier());
299
- manager.pushEvent(context, airMapMarker, "onPress", event);
300
322
 
301
323
  handleMarkerSelection(airMapMarker);
302
324
 
@@ -317,7 +339,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
317
339
  public void onPolygonClick(@NonNull Polygon polygon) {
318
340
  WritableMap event = makeClickEventData(tapLocation);
319
341
  event.putString("action", "polygon-press");
320
- manager.pushEvent(context, polygonMap.get(polygon), "onPress", event);
342
+ // todo: use Fabric events
343
+ // manager.pushEvent(context, polygonMap.get(polygon), "onPress", event);
321
344
  }
322
345
  });
323
346
 
@@ -326,7 +349,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
326
349
  public void onPolylineClick(@NonNull Polyline polyline) {
327
350
  WritableMap event = makeClickEventData(tapLocation);
328
351
  event.putString("action", "polyline-press");
329
- manager.pushEvent(context, polylineMap.get(polyline), "onPress", event);
352
+ // todo: use Fabric events
353
+ // manager.pushEvent(context, polylineMap.get(polyline), "onPress", event);
330
354
  }
331
355
  });
332
356
 
@@ -335,17 +359,20 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
335
359
  public void onInfoWindowClick(@NonNull Marker marker) {
336
360
  WritableMap event = makeClickEventData(marker.getPosition());
337
361
  event.putString("action", "callout-press");
338
- manager.pushEvent(context, view, "onCalloutPress", event);
362
+ // todo: use Fabric events
363
+ // manager.pushEvent(context, view, "onCalloutPress", event);
339
364
 
340
365
  event = makeClickEventData(marker.getPosition());
341
366
  event.putString("action", "callout-press");
342
367
  MapMarker markerView = getMarkerMap(marker);
343
- manager.pushEvent(context, markerView, "onCalloutPress", event);
368
+ // todo: use Fabric events
369
+ // manager.pushEvent(context, markerView, "onCalloutPress", event);
344
370
 
345
371
  event = makeClickEventData(marker.getPosition());
346
372
  event.putString("action", "callout-press");
347
373
  MapCallout infoWindow = markerView.getCalloutView();
348
- if (infoWindow != null) manager.pushEvent(context, infoWindow, "onPress", event);
374
+ // todo: use Fabric events
375
+ // if (infoWindow != null) manager.pushEvent(context, infoWindow, "onPress", event);
349
376
  }
350
377
  });
351
378
 
@@ -354,7 +381,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
354
381
  public void onMapClick(@NonNull LatLng point) {
355
382
  WritableMap event = makeClickEventData(point);
356
383
  event.putString("action", "press");
357
- manager.pushEvent(context, view, "onPress", event);
384
+ dispatchEvent(event, OnPressEvent::new);
358
385
 
359
386
  handleMarkerSelection(null);
360
387
  }
@@ -365,7 +392,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
365
392
  public void onMapLongClick(@NonNull LatLng point) {
366
393
  WritableMap event = makeClickEventData(point);
367
394
  event.putString("action", "long-press");
368
- manager.pushEvent(context, view, "onLongPress", makeClickEventData(point));
395
+ dispatchEvent(event, OnLongPressEvent::new);
369
396
  }
370
397
  });
371
398
 
@@ -374,7 +401,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
374
401
  public void onGroundOverlayClick(@NonNull GroundOverlay groundOverlay) {
375
402
  WritableMap event = makeClickEventData(groundOverlay.getPosition());
376
403
  event.putString("action", "overlay-press");
377
- manager.pushEvent(context, overlayMap.get(groundOverlay), "onPress", event);
404
+ // todo: use Fabric events
405
+ // manager.pushEvent(context, overlayMap.get(groundOverlay), "onPress", event);
378
406
  }
379
407
  });
380
408
 
@@ -385,7 +413,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
385
413
  boolean isGesture = GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE == reason;
386
414
  WritableMap event = new WritableNativeMap();
387
415
  event.putBoolean("isGesture", isGesture);
388
- manager.pushEvent(context, view, "onRegionChangeStart", event);
416
+ // todo: use Fabric events
417
+ // manager.pushEvent(context, view, "onRegionChangeStart", event);
389
418
  }
390
419
  });
391
420
 
@@ -396,9 +425,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
396
425
 
397
426
  cameraLastIdleBounds = null;
398
427
  boolean isGesture = GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE == cameraMoveReason;
399
-
400
- RegionChangeEvent event = new RegionChangeEvent(getId(), bounds, true, isGesture);
401
- eventDispatcher.dispatchEvent(event);
428
+ WritableMap payload = OnRegionChangeEvent.payLoadFor(bounds, true, isGesture);
429
+ dispatchEvent(payload, OnRegionChangeEvent::new);
402
430
  }
403
431
  });
404
432
 
@@ -414,7 +442,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
414
442
  boolean isGesture = GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE == cameraMoveReason;
415
443
 
416
444
  RegionChangeEvent event = new RegionChangeEvent(getId(), bounds, false, isGesture);
417
- eventDispatcher.dispatchEvent(event);
445
+ // todo: use Fabric events
446
+ // eventDispatcher.dispatchEvent(event);
418
447
  }
419
448
  }
420
449
  });
@@ -422,7 +451,8 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
422
451
  map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
423
452
  @Override public void onMapLoaded() {
424
453
  isMapLoaded = true;
425
- manager.pushEvent(context, view, "onMapLoaded", new WritableNativeMap());
454
+ // todo: use Fabric events
455
+ // manager.pushEvent(context, view, "onMapLoaded", new WritableNativeMap());
426
456
  MapView.this.cacheView();
427
457
  }
428
458
  });
@@ -484,24 +514,26 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
484
514
  event = makeClickEventData(selectedMarker.getPosition());
485
515
  event.putString("action", "marker-deselect");
486
516
  event.putString("id", selectedMarker.getIdentifier());
487
- manager.pushEvent(context, selectedMarker, "onDeselect", event);
517
+ // todo: use Fabric events
518
+ // manager.pushEvent(context, selectedMarker, "onDeselect", event);
488
519
 
489
520
  event = makeClickEventData(selectedMarker.getPosition());
490
521
  event.putString("action", "marker-deselect");
491
522
  event.putString("id", selectedMarker.getIdentifier());
492
- manager.pushEvent(context, this, "onMarkerDeselect", event);
523
+ dispatchEvent(event, OnMarkerDeselectEvent::new);
493
524
  }
494
525
 
495
526
  if (target != null) {
496
527
  event = makeClickEventData(target.getPosition());
497
528
  event.putString("action", "marker-select");
498
529
  event.putString("id", target.getIdentifier());
499
- manager.pushEvent(context, target, "onSelect", event);
530
+ // todo: use Fabric events
531
+ // manager.pushEvent(context, target, "onSelect", event);
500
532
 
501
533
  event = makeClickEventData(target.getPosition());
502
534
  event.putString("action", "marker-select");
503
535
  event.putString("id", target.getIdentifier());
504
- manager.pushEvent(context, this, "onMarkerSelect", event);
536
+ dispatchEvent(event, OnMarkerSelectEvent::new);
505
537
  }
506
538
 
507
539
  selectedMarker = target;
@@ -513,6 +545,29 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
513
545
  }
514
546
 
515
547
 
548
+ public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
549
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
550
+ builder.put(OnMarkerPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerPressEvent.EVENT_NAME));
551
+ builder.put(OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME));
552
+ builder.put(OnMarkerSelectEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerSelectEvent.EVENT_NAME));
553
+ builder.put(OnMarkerDeselectEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerDeselectEvent.EVENT_NAME));
554
+ builder.put(OnMarkerDragEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerDragEvent.EVENT_NAME));
555
+ builder.put(OnMarkerDragStartEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerDragStartEvent.EVENT_NAME));
556
+ builder.put(OnMarkerDragEndEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerDragEndEvent.EVENT_NAME));
557
+ builder.put(OnPoiClickEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPoiClickEvent.EVENT_NAME));
558
+ builder.put(OnLongPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnLongPressEvent.EVENT_NAME));
559
+ return builder.build();
560
+ }
561
+
562
+ public static Map<String, Object> getExportedCustomDirectEventTypeConstants() {
563
+ return MapBuilder.of(
564
+ OnMapReadyEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMapReadyEvent.EVENT_NAME),
565
+ OnUserLocationChangeEvent.EVENT_NAME, MapBuilder.of("registrationName", OnUserLocationChangeEvent.EVENT_NAME),
566
+ OnRegionChangeEvent.EVENT_NAME, MapBuilder.of("registrationName", OnRegionChangeEvent.EVENT_NAME)
567
+ );
568
+ }
569
+
570
+
516
571
  /*
517
572
  onDestroy is final method so I can't override it.
518
573
  */
@@ -679,6 +734,9 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
679
734
  map.getUiSettings().setMapToolbarEnabled(toolbarEnabled);
680
735
  }
681
736
  }
737
+ public void setMapType(int mapType){
738
+ map.setMapType(mapType);
739
+ }
682
740
 
683
741
  public void setCacheEnabled(boolean cacheEnabled) {
684
742
  this.cacheEnabled = cacheEnabled;
@@ -1182,31 +1240,36 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1182
1240
  @Override
1183
1241
  public void onMarkerDragStart(Marker marker) {
1184
1242
  WritableMap event = makeClickEventData(marker.getPosition());
1185
- manager.pushEvent(context, this, "onMarkerDragStart", event);
1243
+ // todo: use Fabric events
1244
+ dispatchEvent(event, OnMarkerDragStartEvent::new);
1186
1245
 
1187
1246
  MapMarker markerView = getMarkerMap(marker);
1188
1247
  event = makeClickEventData(marker.getPosition());
1189
- manager.pushEvent(context, markerView, "onDragStart", event);
1248
+ // todo: use Fabric events
1249
+ // manager.pushEvent(context, markerView, "onDragStart", event);
1190
1250
  }
1191
1251
 
1192
1252
  @Override
1193
1253
  public void onMarkerDrag(Marker marker) {
1194
1254
  WritableMap event = makeClickEventData(marker.getPosition());
1195
- manager.pushEvent(context, this, "onMarkerDrag", event);
1255
+ dispatchEvent(event, OnMarkerDragEvent::new);
1196
1256
 
1197
1257
  MapMarker markerView = getMarkerMap(marker);
1198
1258
  event = makeClickEventData(marker.getPosition());
1199
- manager.pushEvent(context, markerView, "onDrag", event);
1259
+ // todo: use Fabric events
1260
+ // manager.pushEvent(context, markerView, "onDrag", event);
1200
1261
  }
1201
1262
 
1202
1263
  @Override
1203
1264
  public void onMarkerDragEnd(Marker marker) {
1204
1265
  WritableMap event = makeClickEventData(marker.getPosition());
1205
- manager.pushEvent(context, this, "onMarkerDragEnd", event);
1266
+ dispatchEvent(event, OnMarkerDragEndEvent::new);
1267
+
1206
1268
 
1207
1269
  MapMarker markerView = getMarkerMap(marker);
1208
1270
  event = makeClickEventData(marker.getPosition());
1209
- manager.pushEvent(context, markerView, "onDragEnd", event);
1271
+ // todo: use Fabric events
1272
+ // manager.pushEvent(context, markerView, "onDragEnd", event);
1210
1273
  }
1211
1274
 
1212
1275
  @Override
@@ -1215,8 +1278,7 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1215
1278
 
1216
1279
  event.putString("placeId", poi.placeId);
1217
1280
  event.putString("name", poi.name);
1218
-
1219
- manager.pushEvent(context, this, "onPoiClick", event);
1281
+ dispatchEvent(event, OnPoiClickEvent::new);
1220
1282
  }
1221
1283
 
1222
1284
  private ProgressBar getMapLoadingProgressBar() {
@@ -1309,7 +1371,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1309
1371
  Point point = new Point((int) ev.getX(), (int) ev.getY());
1310
1372
  LatLng coords = this.map.getProjection().fromScreenLocation(point);
1311
1373
  WritableMap event = makeClickEventData(coords);
1312
- manager.pushEvent(context, this, "onPanDrag", event);
1374
+ // todo: use Fabric events
1375
+ // manager.pushEvent(context, this, "onPanDrag", event);
1313
1376
  }
1314
1377
 
1315
1378
  public void onDoublePress(MotionEvent ev) {
@@ -1317,7 +1380,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1317
1380
  Point point = new Point((int) ev.getX(), (int) ev.getY());
1318
1381
  LatLng coords = this.map.getProjection().fromScreenLocation(point);
1319
1382
  WritableMap event = makeClickEventData(coords);
1320
- manager.pushEvent(context, this, "onDoublePress", event);
1383
+ // todo: use Fabric events
1384
+ // manager.pushEvent(context, this, "onDoublePress", event);
1321
1385
  }
1322
1386
 
1323
1387
  public void setKmlSrc(String kmlSrc) {
@@ -1335,14 +1399,16 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1335
1399
  WritableArray markers = new WritableNativeArray();
1336
1400
 
1337
1401
  if (kmlLayer.getContainers() == null) {
1338
- manager.pushEvent(context, this, "onKmlReady", pointers);
1402
+ // todo: use Fabric events
1403
+ // manager.pushEvent(context, this, "onKmlReady", pointers);
1339
1404
  return;
1340
1405
  }
1341
1406
 
1342
1407
  //Retrieve a nested container within the first container
1343
1408
  KmlContainer container = kmlLayer.getContainers().iterator().next();
1344
1409
  if (container == null || container.getContainers() == null) {
1345
- manager.pushEvent(context, this, "onKmlReady", pointers);
1410
+ // todo: use Fabric events
1411
+ // manager.pushEvent(context, this, "onKmlReady", pointers);
1346
1412
  return;
1347
1413
  }
1348
1414
 
@@ -1376,7 +1442,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1376
1442
  options.position(latLng);
1377
1443
  options.title(title);
1378
1444
  options.snippet(snippet);
1379
-
1445
+ // FIXME: get markerManager from somewhere
1446
+ /*
1380
1447
  MapMarker marker = new MapMarker(context, options, this.manager.getMarkerManager());
1381
1448
 
1382
1449
  if (placemark.getInlineStyle() != null
@@ -1393,17 +1460,19 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1393
1460
 
1394
1461
  addFeature(marker, index++);
1395
1462
 
1463
+
1396
1464
  WritableMap loadedMarker = makeClickEventData(latLng);
1397
1465
  loadedMarker.putString("id", identifier);
1398
1466
  loadedMarker.putString("title", title);
1399
1467
  loadedMarker.putString("description", snippet);
1400
1468
 
1401
1469
  markers.pushMap(loadedMarker);
1470
+ */
1402
1471
  }
1403
1472
 
1404
1473
  pointers.putArray("markers", markers);
1405
-
1406
- manager.pushEvent(context, this, "onKmlReady", pointers);
1474
+ // todo: use Fabric events
1475
+ // manager.pushEvent(context, this, "onKmlReady", pointers);
1407
1476
 
1408
1477
  } catch (XmlPullParserException | IOException | InterruptedException | ExecutionException e) {
1409
1478
  e.printStackTrace();
@@ -1432,8 +1501,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1432
1501
  indoorBuilding.putBoolean("underground", building.isUnderground());
1433
1502
 
1434
1503
  event.putMap("IndoorBuilding", indoorBuilding);
1435
-
1436
- manager.pushEvent(context, this, "onIndoorBuildingFocused", event);
1504
+ // todo: use Fabric events
1505
+ // manager.pushEvent(context, this, "onIndoorBuildingFocused", event);
1437
1506
  } else {
1438
1507
  WritableMap event = Arguments.createMap();
1439
1508
  WritableArray levelsArray = Arguments.createArray();
@@ -1443,8 +1512,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1443
1512
  indoorBuilding.putBoolean("underground", false);
1444
1513
 
1445
1514
  event.putMap("IndoorBuilding", indoorBuilding);
1446
-
1447
- manager.pushEvent(context, this, "onIndoorBuildingFocused", event);
1515
+ // todo: use Fabric events
1516
+ // manager.pushEvent(context, this, "onIndoorBuildingFocused", event);
1448
1517
  }
1449
1518
  }
1450
1519
 
@@ -1467,8 +1536,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1467
1536
  indoorlevel.putString("shortName", level.getShortName());
1468
1537
 
1469
1538
  event.putMap("IndoorLevel", indoorlevel);
1470
-
1471
- manager.pushEvent(context, this, "onIndoorLevelActivated", event);
1539
+ // todo: use Fabric events
1540
+ // manager.pushEvent(context, this, "onIndoorLevelActivated", event);
1472
1541
  }
1473
1542
 
1474
1543
  public void setIndoorActiveLevelIndex(int activeLevelIndex) {