From dbf3bbf76f8d4265ce7deda3c5ab93500ab4b6f0 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 27 Sep 2017 14:11:44 -0700 Subject: [PATCH] Added support for attributionEnabled, logoEnabled, and rotateEnabled on mapview --- .../components/mapview/RCTMGLMapView.java | 23 ++++++++++++++++++- .../mapview/RCTMGLMapViewManager.java | 5 ++++ docs/MapView.md | 3 +++ docs/docs.json | 21 +++++++++++++++++ example/android/app/app.iml | 18 ++++++--------- example/ios/RNMapboxGLExample/Info.plist | 4 +++- ios/RCTMGL/RCTMGLMapView.h | 3 +++ ios/RCTMGL/RCTMGLMapView.m | 19 +++++++++++++++ ios/RCTMGL/RCTMGLMapViewManager.m | 3 +++ javascript/components/MapView.js | 22 ++++++++++++++++++ 10 files changed, 108 insertions(+), 13 deletions(-) diff --git a/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java b/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java index 9fce417..322605b 100644 --- a/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +++ b/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java @@ -68,6 +68,9 @@ public class RCTMGLMapView extends MapView implements private boolean mAnimated; private boolean mScrollEnabled; private boolean mPitchEnabled; + private boolean mRotateEnabled; + private boolean mAttributionEnabled; + private boolean mLogoEnabled; private boolean mShowUserLocation; private int mUserTrackingMode; @@ -290,6 +293,21 @@ public class RCTMGLMapView extends MapView implements updateUISettings(); } + public void setReactRotateEnabled(boolean rotateEnabled) { + mRotateEnabled = rotateEnabled; + updateUISettings(); + } + + public void setReactLogoEnabled(boolean logoEnabled) { + mLogoEnabled = logoEnabled; + updateUISettings(); + } + + public void setReactAttributionEnabled(boolean attributionEnabled) { + mAttributionEnabled = attributionEnabled; + updateUISettings(); + } + public void setReactHeading(double heading) { mHeading = heading; updateCameraPositionIfNeeded(false); @@ -441,6 +459,9 @@ public class RCTMGLMapView extends MapView implements UiSettings uiSettings = mMap.getUiSettings(); uiSettings.setScrollGesturesEnabled(mScrollEnabled); uiSettings.setTiltGesturesEnabled(mPitchEnabled); + uiSettings.setRotateGesturesEnabled(mRotateEnabled); + uiSettings.setAttributionEnabled(mAttributionEnabled); + uiSettings.setLogoEnabled(mLogoEnabled); } private void setMinMaxZoomLevels() { @@ -459,7 +480,7 @@ public class RCTMGLMapView extends MapView implements private void enableLocationLayer() { if (mLocationEngine == null) { - mLocationEngine = LostLocationEngine.getLocationEngine(mContext); + mLocationEngine = new LostLocationEngine(mContext); mLocationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); mLocationEngine.addLocationEngineListener(this); mLocationEngine.activate(); diff --git a/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java b/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java index 9bbb974..364f073 100644 --- a/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +++ b/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java @@ -101,6 +101,11 @@ public class RCTMGLMapViewManager extends AbstractEventEmitter { mapView.setReactPitchEnabled(pitchEnabled); } + @ReactProp(name="attributionEnabled") + public void setAttributionEnabled(RCTMGLMapView mapView, boolean attributionEnabled) { + mapView.setReactAttributionEnabled(attributionEnabled); + } + @ReactProp(name="heading") public void setHeading(RCTMGLMapView mapView, double heading) { mapView.setReactHeading(heading); diff --git a/docs/MapView.md b/docs/MapView.md index ddc883e..d5e4512 100644 --- a/docs/MapView.md +++ b/docs/MapView.md @@ -17,6 +17,9 @@ | maxZoomLevel | `number` | `none` | `false` | Max zoom level of map | | scrollEnabled | `bool` | `true` | `false` | Enable/Disable scroll on the map | | pitchEnabled | `bool` | `true` | `false` | Enable/Disable pitch on map | +| rotateEnabled | `bool` | `true` | `false` | Enable/Disable rotation on map | +| attributionEnabled | `bool` | `true` | `false` | Enable/Disable attribution on map. For iOS you need to add MGLMapboxMetricsEnabledSettingShownInApp=YES
to your Info.plist | +| logoEnabled | `bool` | `true` | `false` | Enable/Disable the logo on the map. | | onPress | `func` | `none` | `false` | Map press listener, gets called when a user presses the map | | onLongPress | `func` | `none` | `false` | Map long press listener, gets called when a user long presses the map | | onRegionWillChange | `func` | `none` | `false` | This event is triggered whenever the currently displayed map region is about to change. | diff --git a/docs/docs.json b/docs/docs.json index 15068a9..4d5b783 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -1001,6 +1001,27 @@ "default": "true", "description": "Enable/Disable pitch on map" }, + { + "name": "rotateEnabled", + "required": false, + "type": "bool", + "default": "true", + "description": "Enable/Disable rotation on map" + }, + { + "name": "attributionEnabled", + "required": false, + "type": "bool", + "default": "true", + "description": "Enable/Disable attribution on map. For iOS you need to add MGLMapboxMetricsEnabledSettingShownInApp=YES\nto your Info.plist" + }, + { + "name": "logoEnabled", + "required": false, + "type": "bool", + "default": "true", + "description": "Enable/Disable the logo on the map." + }, { "name": "onPress", "required": false, diff --git a/example/android/app/app.iml b/example/android/app/app.iml index 78d7b47..bd26113 100644 --- a/example/android/app/app.iml +++ b/example/android/app/app.iml @@ -62,13 +62,6 @@ - - - - - - - @@ -76,11 +69,16 @@ + + + + + + + - - @@ -144,7 +142,5 @@ - - \ No newline at end of file diff --git a/example/ios/RNMapboxGLExample/Info.plist b/example/ios/RNMapboxGLExample/Info.plist index 79c2cbd..53607c9 100644 --- a/example/ios/RNMapboxGLExample/Info.plist +++ b/example/ios/RNMapboxGLExample/Info.plist @@ -2,6 +2,8 @@ + MGLMapboxMetricsEnabledSettingShownInApp + MGLMapboxAccessToken pk.eyJ1Ijoibmlja2l0YWxpYW5vIiwiYSI6ImNqNjVtemx3dzAyeHkyd3IwOHJ3b3JsNmMifQ.QSvBB90og-7PW68dZPDAIg CFBundleDevelopmentRegion @@ -41,7 +43,7 @@ UIViewControllerBasedStatusBarAppearance NSLocationWhenInUseUsageDescription - + NSAppTransportSecurity NSExceptionDomains diff --git a/ios/RCTMGL/RCTMGLMapView.h b/ios/RCTMGL/RCTMGLMapView.h index 97658ac..82299b5 100644 --- a/ios/RCTMGL/RCTMGLMapView.h +++ b/ios/RCTMGL/RCTMGLMapView.h @@ -24,6 +24,9 @@ @property (nonatomic, assign) BOOL animated; @property (nonatomic, assign) BOOL reactScrollEnabled; @property (nonatomic, assign) BOOL reactPitchEnabled; +@property (nonatomic, assign) BOOL reactRotateEnabled; +@property (nonatomic, assign) BOOL reactAttributionEnabled; +@property (nonatomic, assign) BOOL reactLogoEnabled; @property (nonatomic, assign) BOOL reactShowUserLocation; @property (nonatomic, copy) NSString *reactCenterCoordinate; diff --git a/ios/RCTMGL/RCTMGLMapView.m b/ios/RCTMGL/RCTMGLMapView.m index 5629a48..572e845 100644 --- a/ios/RCTMGL/RCTMGLMapView.m +++ b/ios/RCTMGL/RCTMGLMapView.m @@ -101,6 +101,25 @@ static double const M2PI = M_PI * 2; self.pitchEnabled = _reactPitchEnabled; } +- (void)setReactRotateEnabled:(BOOL)reactRotateEnabled +{ + _reactRotateEnabled = reactRotateEnabled; + self.rotateEnabled = _reactRotateEnabled; +} + +- (void)setReactAttributionEnabled:(BOOL)reactAttributionEnabled +{ + _reactAttributionEnabled = reactAttributionEnabled; + self.attributionButton.hidden = !_reactAttributionEnabled; + +} + +- (void)setReactLogoEnabled:(BOOL)reactLogoEnabled +{ + _reactLogoEnabled = reactLogoEnabled; + self.logoView.hidden = !_reactLogoEnabled; +} + - (void)setReactShowUserLocation:(BOOL)reactShowUserLocation { _reactShowUserLocation = reactShowUserLocation; diff --git a/ios/RCTMGL/RCTMGLMapViewManager.m b/ios/RCTMGL/RCTMGLMapViewManager.m index 12b4b00..b306d45 100644 --- a/ios/RCTMGL/RCTMGLMapViewManager.m +++ b/ios/RCTMGL/RCTMGLMapViewManager.m @@ -47,6 +47,9 @@ RCT_EXPORT_MODULE() RCT_EXPORT_VIEW_PROPERTY(animated, BOOL) RCT_REMAP_VIEW_PROPERTY(scrollEnabled, reactScrollEnabled, BOOL) RCT_REMAP_VIEW_PROPERTY(pitchEnabled, reactPitchEnabled, BOOL) +RCT_REMAP_VIEW_PROPERTY(rotateEnabled, reactRotateEnabled, BOOL) +RCT_REMAP_VIEW_PROPERTY(attributionEnabled, reactAttributionEnabled, BOOL) +RCT_REMAP_VIEW_PROPERTY(logoEnabled, reactLogoEnabled, BOOL) RCT_REMAP_VIEW_PROPERTY(showUserLocation, reactShowUserLocation, BOOL) RCT_REMAP_VIEW_PROPERTY(centerCoordinate, reactCenterCoordinate, NSString) diff --git a/javascript/components/MapView.js b/javascript/components/MapView.js index dbb571e..412a77a 100644 --- a/javascript/components/MapView.js +++ b/javascript/components/MapView.js @@ -88,6 +88,22 @@ class MapView extends React.Component { */ pitchEnabled: PropTypes.bool, + /** + * Enable/Disable rotation on map + */ + rotateEnabled: PropTypes.bool, + + /** + * Enable/Disable attribution on map. For iOS you need to add MGLMapboxMetricsEnabledSettingShownInApp=YES + * to your Info.plist + */ + attributionEnabled: PropTypes.bool, + + /** + * Enable/Disable the logo on the map. + */ + logoEnabled: PropTypes.bool, + /** * Map press listener, gets called when a user presses the map */ @@ -180,6 +196,9 @@ class MapView extends React.Component { pitch: 0, scrollEnabled: true, pitchEnabled: true, + rotateEnabled: true, + attributionEnabled: true, + logoEnabled: true, zoomLevel: 16, userTrackingMode: MapboxGL.UserTrackingModes.None, styleURL: MapboxGL.StyleURL.Street, @@ -420,6 +439,9 @@ class MapView extends React.Component { maxZoomLevel: this.props.maxZoomLevel, scrollEnabled: this.props.scrollEnabled, pitchEnabled: this.props.pitchEnabled, + rotateEnabled: this.props.rotateEnabled, + attributionEnabled: this.props.attributionEnabled, + logoEnabled: this.props.logoEnabled, }; const callbacks = {