|
32 | 32 | import android.util.Log; |
33 | 33 | import android.view.View; |
34 | 34 |
|
| 35 | +import com.facebook.react.bridge.Dynamic; |
35 | 36 | import com.facebook.react.bridge.LifecycleEventListener; |
36 | 37 | import com.facebook.react.bridge.Promise; |
37 | 38 | import com.facebook.react.bridge.ReactApplicationContext; |
|
57 | 58 | import com.huawei.hms.maps.OnMapReadyCallback; |
58 | 59 | import com.huawei.hms.maps.UiSettings; |
59 | 60 | import com.huawei.hms.maps.common.util.DistanceCalculator; |
| 61 | +import com.huawei.hms.maps.model.BitmapDescriptor; |
60 | 62 | import com.huawei.hms.maps.model.CameraPosition; |
61 | 63 | import com.huawei.hms.maps.model.Circle; |
62 | 64 | import com.huawei.hms.maps.model.GroundOverlay; |
|
70 | 72 | import com.huawei.hms.maps.model.TileOverlay; |
71 | 73 | import com.huawei.hms.rn.map.logger.HMSLogger; |
72 | 74 | import com.huawei.hms.rn.map.utils.ReactUtils; |
| 75 | +import com.huawei.hms.rn.map.utils.UriIconController; |
| 76 | +import com.huawei.hms.rn.map.utils.UriIconView; |
73 | 77 |
|
74 | 78 | import java.io.ByteArrayOutputStream; |
75 | 79 | import java.util.ArrayList; |
76 | 80 | import java.util.HashMap; |
77 | 81 | import java.util.List; |
78 | 82 | import java.util.Map; |
79 | 83 |
|
80 | | -public class HMSMapView extends MapView implements OnMapReadyCallback, LifecycleEventListener, |
| 84 | +public class HMSMapView extends MapView implements UriIconView, OnMapReadyCallback, LifecycleEventListener, |
81 | 85 | HuaweiMap.CancelableCallback, HuaweiMap.OnMapLoadedCallback, HuaweiMap.SnapshotReadyCallback, |
82 | 86 | HuaweiMap.InfoWindowAdapter, HuaweiMap.OnCameraIdleListener, |
83 | 87 | HuaweiMap.OnCameraMoveCanceledListener, HuaweiMap.OnCameraMoveListener, HuaweiMap.OnCameraMoveStartedListener, |
@@ -125,12 +129,14 @@ public class HMSMapView extends MapView implements OnMapReadyCallback, Lifecycle |
125 | 129 | private boolean initialCompassEnabled; |
126 | 130 | private boolean initialZoomControlsEnabled; |
127 | 131 | private Point centerCoordinates = new Point(); |
| 132 | + private UriIconController uriIconController; |
128 | 133 |
|
129 | 134 | private final HMSLogger logger; |
130 | 135 |
|
131 | 136 | public HMSMapView(final Context context, HuaweiMapOptions huaweiMapOptions) { |
132 | 137 | super(context, huaweiMapOptions); |
133 | 138 | logger = HMSLogger.getInstance(context); |
| 139 | + uriIconController = new UriIconController(context, this); |
134 | 140 | if (context instanceof ReactContext) { |
135 | 141 | mReactContext = (ReactContext) context; |
136 | 142 | } |
@@ -780,6 +786,34 @@ private void setTrafficEnabled(boolean trafficEnabled) { |
780 | 786 | } |
781 | 787 | } |
782 | 788 |
|
| 789 | + private void setMarkerClusterColor(int color){ |
| 790 | + if(mUiSettings != null){ |
| 791 | + mUiSettings.setMarkerClusterColor(color); |
| 792 | + } |
| 793 | + } |
| 794 | + |
| 795 | + private void setMarkerClusterTextColor(int color){ |
| 796 | + if(mUiSettings != null){ |
| 797 | + mUiSettings.setMarkerClusterTextColor(color); |
| 798 | + } |
| 799 | + } |
| 800 | + |
| 801 | + private void setMarkerClusterIcon(ReadableMap icon){ |
| 802 | + if(icon.hasKey("uri")){ |
| 803 | + uriIconController.setUriIcon(icon); |
| 804 | + return; |
| 805 | + } |
| 806 | + if(mUiSettings != null){ |
| 807 | + BitmapDescriptor bitmapDescriptor = ReactUtils.getBitmapDescriptorFromReadableMap(icon); |
| 808 | + setUriIcon(bitmapDescriptor, null); |
| 809 | + } |
| 810 | + } |
| 811 | + |
| 812 | + @Override |
| 813 | + public void setUriIcon(BitmapDescriptor bitmapDescriptor, ReadableMap options) { |
| 814 | + mUiSettings.setMarkerClusterIcon(bitmapDescriptor); |
| 815 | + } |
| 816 | + |
783 | 817 | public interface MapLayer { |
784 | 818 | /** |
785 | 819 | * Adds a layer on the map |
@@ -1029,6 +1063,30 @@ public void receiveCommand(@NonNull HMSMapView root, int commandId, @Nullable Re |
1029 | 1063 | } |
1030 | 1064 | } |
1031 | 1065 |
|
| 1066 | + @ReactProp(name="markerClusterColor") |
| 1067 | + public void setMarkerClusterColor(HMSMapView view, Dynamic color){ |
| 1068 | + if (color.getType() == ReadableType.Array) { |
| 1069 | + view.setMarkerClusterColor(ReactUtils.getColorFromRgbaArray(color.asArray())); |
| 1070 | + } else if (color.getType() == ReadableType.Number) { |
| 1071 | + view.setMarkerClusterColor(color.asInt()); |
| 1072 | + } |
| 1073 | + } |
| 1074 | + |
| 1075 | + @ReactProp(name="markerClusterTextColor") |
| 1076 | + public void setMarkerClusterTextColor(HMSMapView view, Dynamic color){ |
| 1077 | + if (color.getType() == ReadableType.Array) { |
| 1078 | + view.setMarkerClusterTextColor(ReactUtils.getColorFromRgbaArray(color.asArray())); |
| 1079 | + } else if (color.getType() == ReadableType.Number) { |
| 1080 | + view.setMarkerClusterTextColor(color.asInt()); |
| 1081 | + } |
| 1082 | + } |
| 1083 | + |
| 1084 | + @ReactProp(name="markerClusterIcon") |
| 1085 | + public void setMarkerClusterIcon(HMSMapView view, ReadableMap icon){ |
| 1086 | + view.setMarkerClusterIcon(icon); |
| 1087 | + } |
| 1088 | + |
| 1089 | + |
1032 | 1090 | @ReactProp(name = "pointToCenter") |
1033 | 1091 | public void setPointToCenter(HMSMapView view, ReadableMap pointToCenter) { |
1034 | 1092 | logger.startMethodExecutionTimer("HMSMap.pointToCenter"); |
|
0 commit comments