react-native-maps 1.21.0-alpha.51 → 1.21.0-alpha.53

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 (24) hide show
  1. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +103 -0
  2. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  3. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +7 -4
  4. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +176 -0
  5. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  6. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +25 -0
  7. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +25 -0
  8. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +25 -0
  9. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +25 -0
  10. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +25 -0
  11. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +25 -0
  12. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +25 -0
  13. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +25 -0
  14. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +25 -0
  15. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +25 -0
  16. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +24 -0
  17. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +25 -0
  18. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +5 -2
  19. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +53 -1
  20. package/android/src/main/java/com/rnmaps/maps/MapView.java +19 -17
  21. package/lib/MapMarker.js +1 -1
  22. package/lib/decorateMapComponent.js +1 -2
  23. package/lib/specs/NativeComponentMarker.js +1 -3
  24. package/package.json +1 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.bridge.ColorPropConverter;
15
+ import com.facebook.react.bridge.ReadableArray;
16
+ import com.facebook.react.bridge.ReadableMap;
17
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
18
+ import com.facebook.react.uimanager.BaseViewManagerInterface;
19
+
20
+ public class RNMapsMarkerManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNMapsMarkerManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
21
+ public RNMapsMarkerManagerDelegate(U viewManager) {
22
+ super(viewManager);
23
+ }
24
+ @Override
25
+ public void setProperty(T view, String propName, @Nullable Object value) {
26
+ switch (propName) {
27
+ case "anchor":
28
+ mViewManager.setAnchor(view, (ReadableMap) value);
29
+ break;
30
+ case "calloutAnchor":
31
+ mViewManager.setCalloutAnchor(view, (ReadableMap) value);
32
+ break;
33
+ case "image":
34
+ mViewManager.setImage(view, (ReadableMap) value);
35
+ break;
36
+ case "calloutOffset":
37
+ mViewManager.setCalloutOffset(view, (ReadableMap) value);
38
+ break;
39
+ case "displayPriority":
40
+ mViewManager.setDisplayPriority(view, (String) value);
41
+ break;
42
+ case "coordinate":
43
+ mViewManager.setCoordinate(view, (ReadableMap) value);
44
+ break;
45
+ case "description":
46
+ mViewManager.setDescription(view, value == null ? null : (String) value);
47
+ break;
48
+ case "draggable":
49
+ mViewManager.setDraggable(view, value == null ? false : (boolean) value);
50
+ break;
51
+ case "title":
52
+ mViewManager.setTitle(view, value == null ? null : (String) value);
53
+ break;
54
+ case "identifier":
55
+ mViewManager.setIdentifier(view, value == null ? null : (String) value);
56
+ break;
57
+ case "isPreselected":
58
+ mViewManager.setIsPreselected(view, value == null ? false : (boolean) value);
59
+ break;
60
+ case "opacity":
61
+ mViewManager.setOpacity(view, value == null ? 1f : ((Double) value).doubleValue());
62
+ break;
63
+ case "pinColor":
64
+ mViewManager.setPinColor(view, ColorPropConverter.getColor(value, view.getContext()));
65
+ break;
66
+ case "titleVisibility":
67
+ mViewManager.setTitleVisibility(view, (String) value);
68
+ break;
69
+ case "subtitleVisibility":
70
+ mViewManager.setSubtitleVisibility(view, (String) value);
71
+ break;
72
+ case "useLegacyPinView":
73
+ mViewManager.setUseLegacyPinView(view, value == null ? false : (boolean) value);
74
+ break;
75
+ default:
76
+ super.setProperty(view, propName, value);
77
+ }
78
+ }
79
+
80
+ @Override
81
+ public void receiveCommand(T view, String commandName, @Nullable ReadableArray args) {
82
+ switch (commandName) {
83
+ case "animateToCoordinates":
84
+ mViewManager.animateToCoordinates(view, args.getDouble(0), args.getDouble(1), args.getInt(2));
85
+ break;
86
+ case "setCoordinates":
87
+ mViewManager.setCoordinates(view, args.getDouble(0), args.getDouble(1));
88
+ break;
89
+ case "showCallout":
90
+ mViewManager.showCallout(view);
91
+ break;
92
+ case "hideCallout":
93
+ mViewManager.hideCallout(view);
94
+ break;
95
+ case "redrawCallout":
96
+ mViewManager.redrawCallout(view);
97
+ break;
98
+ case "redraw":
99
+ mViewManager.redraw(view);
100
+ break;
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.bridge.ReadableMap;
15
+
16
+ public interface RNMapsMarkerManagerInterface<T extends View> {
17
+ void setAnchor(T view, @Nullable ReadableMap value);
18
+ void setCalloutAnchor(T view, @Nullable ReadableMap value);
19
+ void setImage(T view, @Nullable ReadableMap value);
20
+ void setCalloutOffset(T view, @Nullable ReadableMap value);
21
+ void setDisplayPriority(T view, @Nullable String value);
22
+ void setCoordinate(T view, @Nullable ReadableMap value);
23
+ void setDescription(T view, @Nullable String value);
24
+ void setDraggable(T view, boolean value);
25
+ void setTitle(T view, @Nullable String value);
26
+ void setIdentifier(T view, @Nullable String value);
27
+ void setIsPreselected(T view, boolean value);
28
+ void setOpacity(T view, double value);
29
+ void setPinColor(T view, @Nullable Integer value);
30
+ void setTitleVisibility(T view, @Nullable String value);
31
+ void setSubtitleVisibility(T view, @Nullable String value);
32
+ void setUseLegacyPinView(T view, boolean value);
33
+ void animateToCoordinates(T view, double latitude, double longitude, int duration);
34
+ void setCoordinates(T view, double latitude, double longitude);
35
+ void showCallout(T view);
36
+ void hideCallout(T view);
37
+ void redrawCallout(T view);
38
+ void redraw(T view);
39
+ }
@@ -1,24 +1,22 @@
1
1
  package com.rnmaps.fabric;
2
2
 
3
3
 
4
+ import android.view.View;
5
+
4
6
  import androidx.annotation.Nullable;
5
7
 
6
8
  import com.facebook.react.bridge.ReactApplicationContext;
7
- import com.facebook.react.bridge.ReactContext;
8
9
  import com.facebook.react.bridge.ReadableMap;
9
10
  import com.facebook.react.module.annotations.ReactModule;
10
- import com.facebook.react.uimanager.SimpleViewManager;
11
11
  import com.facebook.react.uimanager.ThemedReactContext;
12
12
  import com.facebook.react.uimanager.ViewGroupManager;
13
13
  import com.facebook.react.uimanager.ViewManagerDelegate;
14
- import com.facebook.react.uimanager.annotations.ReactProp;
15
14
  import com.facebook.react.viewmanagers.RNMapsMapViewManagerInterface;
16
15
  import com.facebook.react.viewmanagers.RNMapsMapViewManagerDelegate;
17
16
  import com.google.android.gms.maps.GoogleMap;
18
17
  import com.google.android.gms.maps.GoogleMapOptions;
19
18
  import com.rnmaps.maps.MapView;
20
19
 
21
- import java.util.HashMap;
22
20
  import java.util.Map;
23
21
 
24
22
  @ReactModule(name = MapViewManager.REACT_CLASS)
@@ -142,6 +140,11 @@ public class MapViewManager extends ViewGroupManager<MapView> implements RNMapsM
142
140
 
143
141
  }
144
142
 
143
+ @Override
144
+ public void addView(MapView parent, View child, int index) {
145
+ parent.addFeature(child, index);
146
+ }
147
+
145
148
  @Override
146
149
  public void setMapType(MapView view, @Nullable String value) {
147
150
  //hybrid | none | satellite | standard | terrain
@@ -0,0 +1,176 @@
1
+ package com.rnmaps.fabric;
2
+
3
+
4
+ import androidx.annotation.Nullable;
5
+
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReadableMap;
8
+ import com.facebook.react.module.annotations.ReactModule;
9
+ import com.facebook.react.uimanager.ThemedReactContext;
10
+ import com.facebook.react.uimanager.ViewGroupManager;
11
+ import com.facebook.react.uimanager.ViewManagerDelegate;
12
+ import com.facebook.react.viewmanagers.RNMapsMapViewManagerDelegate;
13
+ import com.facebook.react.viewmanagers.RNMapsMapViewManagerInterface;
14
+ import com.facebook.react.viewmanagers.RNMapsMarkerManagerDelegate;
15
+ import com.facebook.react.viewmanagers.RNMapsMarkerManagerInterface;
16
+ import com.google.android.gms.maps.GoogleMap;
17
+ import com.google.android.gms.maps.GoogleMapOptions;
18
+ import com.google.android.gms.maps.model.LatLng;
19
+ import com.rnmaps.maps.MapMarker;
20
+ import com.rnmaps.maps.MapView;
21
+
22
+ import java.util.Map;
23
+
24
+ @ReactModule(name = MarkerManager.REACT_CLASS)
25
+ public class MarkerManager extends ViewGroupManager<MapMarker> implements RNMapsMarkerManagerInterface<MapMarker> {
26
+
27
+
28
+ public MarkerManager(ReactApplicationContext context){
29
+ super(context);
30
+ }
31
+ private GoogleMapOptions options;
32
+ private final RNMapsMarkerManagerDelegate<MapMarker, MarkerManager> delegate =
33
+ new RNMapsMarkerManagerDelegate<>(this);
34
+
35
+ @Override
36
+ public ViewManagerDelegate<MapMarker> getDelegate() {
37
+ return delegate;
38
+ }
39
+
40
+ @Override
41
+ public String getName() {
42
+ return REACT_CLASS;
43
+ }
44
+
45
+ @Override
46
+ public MapMarker createViewInstance(ThemedReactContext context) {
47
+ return new MapMarker(context, null);
48
+ }
49
+
50
+
51
+ public static final String REACT_CLASS = "RNMapsMarker";
52
+
53
+ @Nullable
54
+ @Override
55
+ public Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
56
+ return MapMarker.getExportedCustomBubblingEventTypeConstants();
57
+ }
58
+
59
+ @Nullable
60
+ @Override
61
+ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
62
+ return MapMarker.getExportedCustomDirectEventTypeConstants();
63
+ }
64
+
65
+ @Override
66
+ public void setAnchor(MapMarker view, @Nullable ReadableMap map) {
67
+ double x = map != null && map.hasKey("x") ? map.getDouble("x") : 0.5;
68
+ double y = map != null && map.hasKey("y") ? map.getDouble("y") : 1.0;
69
+ view.setAnchor(x, y);
70
+ }
71
+
72
+ @Override
73
+ public void setCalloutAnchor(MapMarker view, @Nullable ReadableMap value) {
74
+
75
+ }
76
+
77
+ @Override
78
+ public void setImage(MapMarker view, @Nullable ReadableMap value) {
79
+
80
+ }
81
+
82
+ @Override
83
+ public void setCalloutOffset(MapMarker view, @Nullable ReadableMap value) {
84
+
85
+ }
86
+
87
+ @Override
88
+ public void setDisplayPriority(MapMarker view, @Nullable String value) {
89
+
90
+ }
91
+
92
+ @Override
93
+ public void setCoordinate(MapMarker view, @Nullable ReadableMap value) {
94
+ view.setCoordinate(value);
95
+ }
96
+
97
+ @Override
98
+ public void setDescription(MapMarker view, @Nullable String value) {
99
+
100
+ }
101
+
102
+ @Override
103
+ public void setDraggable(MapMarker view, boolean value) {
104
+ view.setDraggable(value);
105
+ }
106
+
107
+ @Override
108
+ public void setTitle(MapMarker view, @Nullable String value) {
109
+ view.setTitle(value);
110
+ }
111
+
112
+ @Override
113
+ public void setIdentifier(MapMarker view, @Nullable String value) {
114
+ view.setIdentifier(value);
115
+ }
116
+
117
+ @Override
118
+ public void setIsPreselected(MapMarker view, boolean value) {
119
+
120
+ }
121
+
122
+ @Override
123
+ public void setOpacity(MapMarker view, double value) {
124
+ view.setOpacity((float) value);
125
+ }
126
+
127
+ @Override
128
+ public void setPinColor(MapMarker view, @Nullable Integer value) {
129
+
130
+ }
131
+
132
+ @Override
133
+ public void setTitleVisibility(MapMarker view, @Nullable String value) {
134
+
135
+ }
136
+
137
+ @Override
138
+ public void setSubtitleVisibility(MapMarker view, @Nullable String value) {
139
+
140
+ }
141
+
142
+ @Override
143
+ public void setUseLegacyPinView(MapMarker view, boolean value) {
144
+
145
+ }
146
+
147
+ @Override
148
+ public void animateToCoordinates(MapMarker view, double latitude, double longitude, int duration) {
149
+
150
+ }
151
+
152
+ @Override
153
+ public void setCoordinates(MapMarker view, double latitude, double longitude) {
154
+ view.setCoordinate(new LatLng(latitude, longitude));
155
+ }
156
+
157
+ @Override
158
+ public void showCallout(MapMarker view) {
159
+
160
+ }
161
+
162
+ @Override
163
+ public void hideCallout(MapMarker view) {
164
+
165
+ }
166
+
167
+ @Override
168
+ public void redrawCallout(MapMarker view) {
169
+
170
+ }
171
+
172
+ @Override
173
+ public void redraw(MapMarker view) {
174
+
175
+ }
176
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnCalloutPressEvent extends Event<OnCalloutPressEvent> {
7
+ public static final String EVENT_NAME = "topCalloutPress";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnCalloutPressEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnDeselectEvent extends Event<OnDeselectEvent> {
7
+ public static final String EVENT_NAME = "topDeselect";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnDeselectEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnDragEndEvent extends Event<OnDragEndEvent> {
7
+ public static final String EVENT_NAME = "topDragEnd";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnDragEndEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnDragEvent extends Event<OnDragEvent> {
7
+ public static final String EVENT_NAME = "topDrag";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnDragEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnDragStartEvent extends Event<OnDragStartEvent> {
7
+ public static final String EVENT_NAME = "topDragStart";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnDragStartEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnLongPressEvent extends Event<OnLongPressEvent> {
7
+ public static final String EVENT_NAME = "topLongPress";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnLongPressEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnMarkerDeselectEvent extends Event<OnMarkerDeselectEvent> {
7
+ public static final String EVENT_NAME = "topMarkerDeselect";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnMarkerDeselectEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnMarkerDragEndEvent extends Event<OnMarkerDragEndEvent> {
7
+ public static final String EVENT_NAME = "topMarkerDragEnd";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnMarkerDragEndEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnMarkerDragEvent extends Event<OnMarkerDragEvent> {
7
+ public static final String EVENT_NAME = "topMarkerDrag";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnMarkerDragEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnMarkerDragStartEvent extends Event<OnMarkerDragStartEvent> {
7
+ public static final String EVENT_NAME = "topMarkerDragStart";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnMarkerDragStartEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnMarkerSelectEvent extends Event<OnMarkerSelectEvent> {
7
+ public static final String EVENT_NAME = "topMarkerSelect";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnMarkerSelectEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -0,0 +1,24 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnPoiClickEvent extends Event<OnPoiClickEvent> {
7
+ public static final String EVENT_NAME = "topPoiClick";
8
+ private final WritableMap payload;
9
+
10
+ public OnPoiClickEvent(int surfaceId, int viewId, WritableMap payload) {
11
+ super(surfaceId, viewId);
12
+ this.payload = payload;
13
+ }
14
+
15
+ @Override
16
+ public String getEventName() {
17
+ return EVENT_NAME;
18
+ }
19
+
20
+ @Override
21
+ public WritableMap getEventData() {
22
+ return payload;
23
+ }
24
+ }
@@ -0,0 +1,25 @@
1
+ package com.rnmaps.fabric.event;
2
+
3
+ import com.facebook.react.bridge.WritableMap;
4
+ import com.facebook.react.uimanager.events.Event;
5
+
6
+ public class OnSelectEvent extends Event<OnSelectEvent> {
7
+ public static final String EVENT_NAME = "topSelect";
8
+
9
+ private final WritableMap payload;
10
+
11
+ public OnSelectEvent(int surfaceId, int viewId, WritableMap payload) {
12
+ super(surfaceId, viewId);
13
+ this.payload = payload;
14
+ }
15
+
16
+ @Override
17
+ public String getEventName() {
18
+ return EVENT_NAME;
19
+ }
20
+
21
+ @Override
22
+ public WritableMap getEventData() {
23
+ return payload;
24
+ }
25
+ }
@@ -9,10 +9,10 @@ import com.facebook.react.module.model.ReactModuleInfo;
9
9
  import com.facebook.react.module.model.ReactModuleInfoProvider;
10
10
  import com.facebook.react.uimanager.ViewManager;
11
11
  import com.rnmaps.fabric.MapViewManager;
12
+ import com.rnmaps.fabric.MarkerManager;
12
13
  import com.rnmaps.fabric.NativeAirMapsModule;
13
14
  import com.facebook.fbreact.specs.NativeAirMapsModuleSpec;
14
15
 
15
- import java.util.Collections;
16
16
  import java.util.HashMap;
17
17
  import java.util.List;
18
18
  import java.util.Map;
@@ -21,12 +21,15 @@ public class MapAirModulePackage extends TurboReactPackage {
21
21
 
22
22
  @Override
23
23
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
24
- return Collections.singletonList(new MapViewManager(reactContext));
24
+ return List.of(new MapViewManager(reactContext), new MarkerManager(reactContext));
25
25
  }
26
26
 
27
27
 
28
28
  @Override
29
29
  public NativeModule getModule(String name, ReactApplicationContext reactContext) {
30
+ if (MarkerManager.REACT_CLASS.equals(name)) {
31
+ return new MarkerManager(reactContext);
32
+ }
30
33
  if (MapViewManager.REACT_CLASS.equals(name)) {
31
34
  return new MapViewManager(reactContext);
32
35
  }
@@ -32,13 +32,27 @@ import com.facebook.imagepipeline.image.CloseableStaticBitmap;
32
32
  import com.facebook.imagepipeline.image.ImageInfo;
33
33
  import com.facebook.imagepipeline.request.ImageRequest;
34
34
  import com.facebook.imagepipeline.request.ImageRequestBuilder;
35
+ import com.facebook.react.bridge.ReactContext;
35
36
  import com.facebook.react.bridge.ReadableMap;
37
+ import com.facebook.react.bridge.WritableMap;
38
+ import com.facebook.react.common.MapBuilder;
39
+ import com.facebook.react.uimanager.UIManagerHelper;
40
+ import com.facebook.react.uimanager.events.Event;
41
+ import com.facebook.react.uimanager.events.EventDispatcher;
36
42
  import com.google.android.gms.maps.model.BitmapDescriptor;
37
43
  import com.google.android.gms.maps.model.BitmapDescriptorFactory;
38
44
  import com.google.android.gms.maps.model.LatLng;
39
45
  import com.google.android.gms.maps.model.Marker;
40
46
  import com.google.android.gms.maps.model.MarkerOptions;
41
47
  import com.google.maps.android.collections.MarkerManager;
48
+ import com.rnmaps.fabric.event.OnDeselectEvent;
49
+ import com.rnmaps.fabric.event.OnDragEndEvent;
50
+ import com.rnmaps.fabric.event.OnDragEvent;
51
+ import com.rnmaps.fabric.event.OnDragStartEvent;
52
+ import com.rnmaps.fabric.event.OnPressEvent;
53
+ import com.rnmaps.fabric.event.OnSelectEvent;
54
+
55
+ import java.util.Map;
42
56
 
43
57
  public class MapMarker extends MapFeature {
44
58
 
@@ -155,7 +169,10 @@ public class MapMarker extends MapFeature {
155
169
  }
156
170
 
157
171
  public void setCoordinate(ReadableMap coordinate) {
158
- position = new LatLng(coordinate.getDouble("latitude"), coordinate.getDouble("longitude"));
172
+ setCoordinate(new LatLng(coordinate.getDouble("latitude"), coordinate.getDouble("longitude")));
173
+ }
174
+ public void setCoordinate(LatLng position){
175
+ this.position = position;
159
176
  if (marker != null) {
160
177
  marker.setPosition(position);
161
178
  }
@@ -618,8 +635,43 @@ public class MapMarker extends MapFeature {
618
635
  getContext().getPackageName());
619
636
  }
620
637
 
638
+ @FunctionalInterface
639
+ public interface EventCreator<T extends Event> {
640
+ T create(int surfaceId, int viewId, WritableMap payload);
641
+ }
642
+ private <T extends Event> void dispatchEvent(WritableMap payload, MapView.EventCreator<T> creator) {
643
+ // Cast context to ReactContext
644
+ ReactContext reactContext = (ReactContext) context;
645
+
646
+ // Get the event dispatcher
647
+ EventDispatcher eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, getId());
648
+
649
+ // If there is a dispatcher, create and dispatch the event
650
+ if (eventDispatcher != null) {
651
+ int surfaceId = UIManagerHelper.getSurfaceId(reactContext);
652
+ T event = creator.create(surfaceId, getId(), payload);
653
+ eventDispatcher.dispatchEvent(event);
654
+ }
655
+ }
656
+
621
657
  private BitmapDescriptor getBitmapDescriptorByName(String name) {
622
658
  return BitmapDescriptorFactory.fromResource(getDrawableResourceByName(name));
623
659
  }
624
660
 
661
+ public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
662
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
663
+ builder.put(OnSelectEvent.EVENT_NAME, MapBuilder.of("registrationName", OnSelectEvent.EVENT_NAME));
664
+ builder.put(OnDeselectEvent.EVENT_NAME, MapBuilder.of("registrationName", OnDeselectEvent.EVENT_NAME));
665
+ builder.put(OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME));
666
+ return builder.build();
667
+ }
668
+
669
+ public static Map<String, Object> getExportedCustomDirectEventTypeConstants() {
670
+ return MapBuilder.of(
671
+ OnDragEvent.EVENT_NAME, MapBuilder.of("registrationName", OnDragEvent.EVENT_NAME),
672
+ OnDragStartEvent.EVENT_NAME, MapBuilder.of("registrationName", OnDragStartEvent.EVENT_NAME),
673
+ OnDragEndEvent.EVENT_NAME, MapBuilder.of("registrationName", OnDragEndEvent.EVENT_NAME)
674
+ );
675
+ }
676
+
625
677
  }
@@ -392,8 +392,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
392
392
  public void onMapLongClick(@NonNull LatLng point) {
393
393
  WritableMap event = makeClickEventData(point);
394
394
  event.putString("action", "long-press");
395
- // todo: use Fabric events
396
- // manager.pushEvent(context, view, "onLongPress", makeClickEventData(point));
395
+ dispatchEvent(event, OnLongPressEvent::new);
397
396
  }
398
397
  });
399
398
 
@@ -521,8 +520,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
521
520
  event = makeClickEventData(selectedMarker.getPosition());
522
521
  event.putString("action", "marker-deselect");
523
522
  event.putString("id", selectedMarker.getIdentifier());
524
- // todo: use Fabric events
525
- // manager.pushEvent(context, this, "onMarkerDeselect", event);
523
+ dispatchEvent(event, OnMarkerDeselectEvent::new);
526
524
  }
527
525
 
528
526
  if (target != null) {
@@ -535,8 +533,7 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
535
533
  event = makeClickEventData(target.getPosition());
536
534
  event.putString("action", "marker-select");
537
535
  event.putString("id", target.getIdentifier());
538
- // todo: use Fabric events
539
- // manager.pushEvent(context, this, "onMarkerSelect", event);
536
+ dispatchEvent(event, OnMarkerSelectEvent::new);
540
537
  }
541
538
 
542
539
  selectedMarker = target;
@@ -549,10 +546,17 @@ public class MapView extends com.google.android.gms.maps.MapView implements Goog
549
546
 
550
547
 
551
548
  public static Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
552
- return MapBuilder.of(
553
- OnMarkerPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnMarkerPressEvent.EVENT_NAME),
554
- OnPressEvent.EVENT_NAME, MapBuilder.of("registrationName", OnPressEvent.EVENT_NAME)
555
- );
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();
556
560
  }
557
561
 
558
562
  public static Map<String, Object> getExportedCustomDirectEventTypeConstants() {
@@ -1237,7 +1241,7 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1237
1241
  public void onMarkerDragStart(Marker marker) {
1238
1242
  WritableMap event = makeClickEventData(marker.getPosition());
1239
1243
  // todo: use Fabric events
1240
- // manager.pushEvent(context, this, "onMarkerDragStart", event);
1244
+ dispatchEvent(event, OnMarkerDragStartEvent::new);
1241
1245
 
1242
1246
  MapMarker markerView = getMarkerMap(marker);
1243
1247
  event = makeClickEventData(marker.getPosition());
@@ -1248,8 +1252,7 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1248
1252
  @Override
1249
1253
  public void onMarkerDrag(Marker marker) {
1250
1254
  WritableMap event = makeClickEventData(marker.getPosition());
1251
- // todo: use Fabric events
1252
- /// manager.pushEvent(context, this, "onMarkerDrag", event);
1255
+ dispatchEvent(event, OnMarkerDragEvent::new);
1253
1256
 
1254
1257
  MapMarker markerView = getMarkerMap(marker);
1255
1258
  event = makeClickEventData(marker.getPosition());
@@ -1260,8 +1263,8 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1260
1263
  @Override
1261
1264
  public void onMarkerDragEnd(Marker marker) {
1262
1265
  WritableMap event = makeClickEventData(marker.getPosition());
1263
- // todo: use Fabric events
1264
- // manager.pushEvent(context, this, "onMarkerDragEnd", event);
1266
+ dispatchEvent(event, OnMarkerDragEndEvent::new);
1267
+
1265
1268
 
1266
1269
  MapMarker markerView = getMarkerMap(marker);
1267
1270
  event = makeClickEventData(marker.getPosition());
@@ -1275,8 +1278,7 @@ public static CameraPosition cameraPositionFromMap(ReadableMap camera){
1275
1278
 
1276
1279
  event.putString("placeId", poi.placeId);
1277
1280
  event.putString("name", poi.name);
1278
- // todo: use Fabric events
1279
- // manager.pushEvent(context, this, "onPoiClick", event);
1281
+ dispatchEvent(event, OnPoiClickEvent::new);
1280
1282
  }
1281
1283
 
1282
1284
  private ProgressBar getMapLoadingProgressBar() {
package/lib/MapMarker.js CHANGED
@@ -116,7 +116,7 @@ class MapMarker extends React.Component {
116
116
  const { stopPropagation = false } = this.props;
117
117
  if (this.fabricMarker === undefined) {
118
118
  const provider = this.context;
119
- this.fabricMarker = provider !== ProviderConstants_1.PROVIDER_GOOGLE && react_native_1.Platform.OS === 'ios';
119
+ this.fabricMarker = !(react_native_1.Platform.OS === 'ios' && provider !== ProviderConstants_1.PROVIDER_GOOGLE);
120
120
  }
121
121
  let icon;
122
122
  if (this.props.icon) {
@@ -40,8 +40,7 @@ function decorateMapComponent(Component, componentName, providers) {
40
40
  function getNativeComponent() {
41
41
  const provider = this.context;
42
42
  if (componentName === 'Marker' &&
43
- provider !== ProviderConstants_1.PROVIDER_GOOGLE &&
44
- react_native_1.Platform.OS === 'ios') {
43
+ (react_native_1.Platform.OS !== 'ios' || provider !== ProviderConstants_1.PROVIDER_GOOGLE)) {
45
44
  // @ts-ignore
46
45
  return NativeComponentMarker_1.default;
47
46
  }
@@ -16,6 +16,4 @@ exports.Commands = (0, codegenNativeCommands_1.default)({
16
16
  'redraw',
17
17
  ],
18
18
  });
19
- exports.default = (0, codegenNativeComponent_1.default)('RNMapsMarker', {
20
- excludedPlatforms: ['android'],
21
- });
19
+ exports.default = (0, codegenNativeComponent_1.default)('RNMapsMarker', {});
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "main": "lib/index.js",
6
6
  "author": "Leland Richardson <leland.m.richardson@gmail.com>",
7
7
  "homepage": "https://github.com/react-native-maps/react-native-maps#readme",
8
- "version": "1.21.0-alpha.51",
8
+ "version": "1.21.0-alpha.53",
9
9
  "license": "MIT",
10
10
  "scripts": {
11
11
  "lint": "eslint . --max-warnings 0",