Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
56b3a84
[google_maps_flutter] add zoom controls property
ened Oct 9, 2018
dfa8806
Merge branch 'master' into maps/zoom-controls
ened Nov 21, 2018
88afdd9
Merge branch 'master' into maps/zoom-controls
ened May 13, 2019
8cf78e6
Code cleanup
ened May 13, 2019
c6b89b7
Merge branch 'master' into maps/zoom-controls
ened Jun 21, 2019
35a1aaa
Update tests for new zoomControlsEnabled flag
ened Jun 21, 2019
3b2646d
Add native parts of the isZoomControlsEnabled method.
ened Jun 21, 2019
04e9158
Attempt to use NSNumber numberWithBool
ened Jun 21, 2019
432d06b
Do not run the full zoomControls test on iOS.
ened Jun 21, 2019
f80c0de
Merge branch 'master' into maps/zoom-controls
ened Jun 25, 2019
3bd01d2
[google_maps_flutter] zoom controls version bump & changelog
ened Jun 25, 2019
7253ff9
Merge branch 'master' into maps/zoom-controls
ened Aug 6, 2019
ad1ed63
Merge branch 'master' into maps/zoom-controls
ened Oct 15, 2019
8ee836f
Merge branch 'master' into maps/zoom-controls
ened Oct 23, 2019
8d389b5
Merge branch 'master' into maps/zoom-controls
ened Oct 26, 2019
ea388f8
Merge branch 'maps/zoom-controls' of github.com:ened/plugins into map…
Feb 7, 2020
b7392b4
Merge branch 'master' into maps/zoom-controls
Feb 7, 2020
11b445a
Addresses PR feedback
Feb 7, 2020
9da6927
Updates e2e test syntax
ened Feb 9, 2020
e8957fe
Reverts the default value to the Android logic
ened Feb 9, 2020
c22f49a
Updates documentation
ened Feb 9, 2020
b102198
Inlude a assert when the zoomControlsEnabled property is set on iOS
ened Feb 9, 2020
6680593
Merge branch 'master' of https://github.com/flutter/plugins into maps…
ened Feb 9, 2020
1b3d581
Adds assertion message
ened Feb 9, 2020
5ba5f5f
Reverts the manual setter and extends the documentation
ened Feb 9, 2020
dfadc6a
Adjusts e2e test to expect disabled zoom controls on iOS by default
ened Feb 9, 2020
c933769
Merge branch 'master' into maps/zoom-controls
ened Mar 25, 2020
a1c75f3
Merge branch 'master' into maps/zoom-controls
ened Mar 30, 2020
5010956
Update the documentation
ened Mar 30, 2020
e94eaf5
Merge branch 'master' into maps/zoom-controls
ened Apr 14, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.5.26

* Adds support for toggling zoom controls (Android only)

## 0.5.25+3

* Rename 'Page' in the example app to avoid type conflict with the Flutter Framework.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,10 @@ static void interpretGoogleMapOptions(Object o, GoogleMapOptionsSink sink) {
if (myLocationEnabled != null) {
sink.setMyLocationEnabled(toBoolean(myLocationEnabled));
}
final Object zoomControlsEnabled = data.get("zoomControlsEnabled");
if (zoomControlsEnabled != null) {
sink.setZoomControlsEnabled(toBoolean(zoomControlsEnabled));
}
final Object myLocationButtonEnabled = data.get("myLocationButtonEnabled");
if (myLocationButtonEnabled != null) {
sink.setMyLocationButtonEnabled(toBoolean(myLocationButtonEnabled));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,11 @@ public void setMyLocationEnabled(boolean myLocationEnabled) {
this.myLocationEnabled = myLocationEnabled;
}

@Override
public void setZoomControlsEnabled(boolean zoomControlsEnabled) {
options.zoomControlsEnabled(zoomControlsEnabled);
}

@Override
public void setMyLocationButtonEnabled(boolean myLocationButtonEnabled) {
this.myLocationButtonEnabled = myLocationButtonEnabled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ final class GoogleMapController
private boolean trackCameraPosition = false;
private boolean myLocationEnabled = false;
private boolean myLocationButtonEnabled = false;
private boolean zoomControlsEnabled = true;
private boolean indoorEnabled = true;
private boolean trafficEnabled = false;
private boolean buildingsEnabled = true;
Expand Down Expand Up @@ -400,6 +401,11 @@ public void onSnapshotReady(Bitmap bitmap) {
result.success(googleMap.getUiSettings().isZoomGesturesEnabled());
break;
}
case "map#isZoomControlsEnabled":
{
result.success(googleMap.getUiSettings().isZoomControlsEnabled());
break;
}
case "map#isScrollGesturesEnabled":
{
result.success(googleMap.getUiSettings().isScrollGesturesEnabled());
Expand Down Expand Up @@ -770,6 +776,17 @@ public void setMyLocationButtonEnabled(boolean myLocationButtonEnabled) {
}
}

@Override
public void setZoomControlsEnabled(boolean zoomControlsEnabled) {
if (this.zoomControlsEnabled == zoomControlsEnabled) {
return;
}
this.zoomControlsEnabled = zoomControlsEnabled;
if (googleMap != null) {
googleMap.getUiSettings().setZoomControlsEnabled(zoomControlsEnabled);
}
}

@Override
public void setInitialMarkers(Object initialMarkers) {
this.initialMarkers = (List<Object>) initialMarkers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ interface GoogleMapOptionsSink {

void setMyLocationEnabled(boolean myLocationEnabled);

void setZoomControlsEnabled(boolean zoomControlsEnabled);

void setMyLocationButtonEnabled(boolean myLocationButtonEnabled);

void setIndoorEnabled(boolean indoorEnabled);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class MapUiBodyState extends State<MapUiBody> {
bool _rotateGesturesEnabled = true;
bool _scrollGesturesEnabled = true;
bool _tiltGesturesEnabled = true;
bool _zoomControlsEnabled = false;
bool _zoomGesturesEnabled = true;
bool _indoorViewEnabled = true;
bool _myLocationEnabled = true;
Expand Down Expand Up @@ -179,6 +180,18 @@ class MapUiBodyState extends State<MapUiBody> {
);
}

Widget _zoomControlsToggler() {
return FlatButton(
child:
Text('${_zoomControlsEnabled ? 'disable' : 'enable'} zoom controls'),
onPressed: () {
setState(() {
_zoomControlsEnabled = !_zoomControlsEnabled;
});
},
);
}

Widget _indoorViewToggler() {
return FlatButton(
child: Text('${_indoorViewEnabled ? 'disable' : 'enable'} indoor'),
Expand Down Expand Up @@ -269,6 +282,7 @@ class MapUiBodyState extends State<MapUiBody> {
scrollGesturesEnabled: _scrollGesturesEnabled,
tiltGesturesEnabled: _tiltGesturesEnabled,
zoomGesturesEnabled: _zoomGesturesEnabled,
zoomControlsEnabled: _zoomControlsEnabled,
indoorViewEnabled: _indoorViewEnabled,
myLocationEnabled: _myLocationEnabled,
myLocationButtonEnabled: _myLocationButtonEnabled,
Expand Down Expand Up @@ -310,6 +324,7 @@ class MapUiBodyState extends State<MapUiBody> {
_scrollToggler(),
_tiltToggler(),
_zoomToggler(),
_zoomControlsToggler(),
_indoorViewToggler(),
_myLocationToggler(),
_myLocationButtonToggler(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ class GoogleMapInspector {
return await _channel.invokeMethod<bool>('map#isZoomGesturesEnabled');
}

Future<bool> isZoomControlsEnabled() async {
return await _channel.invokeMethod<bool>('map#isZoomControlsEnabled');
}

Future<bool> isRotateGesturesEnabled() async {
return await _channel.invokeMethod<bool>('map#isRotateGesturesEnabled');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,48 @@ void main() {
expect(zoomGesturesEnabled, true);
});

testWidgets('testZoomControlsEnabled', (WidgetTester tester) async {
final Key key = GlobalKey();
final Completer<GoogleMapInspector> inspectorCompleter =
Completer<GoogleMapInspector>();

await tester.pumpWidget(Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
key: key,
initialCameraPosition: _kInitialCameraPosition,
onMapCreated: (GoogleMapController controller) {
final GoogleMapInspector inspector =
// ignore: invalid_use_of_visible_for_testing_member
GoogleMapInspector(controller.channel);
inspectorCompleter.complete(inspector);
},
),
));

final GoogleMapInspector inspector = await inspectorCompleter.future;
bool zoomControlsEnabled = await inspector.isZoomControlsEnabled();
expect(zoomControlsEnabled, Platform.isIOS ? false : true);

/// Zoom Controls functionality is not available on iOS at the moment.
if (Platform.isAndroid) {
await tester.pumpWidget(Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
key: key,
initialCameraPosition: _kInitialCameraPosition,
zoomControlsEnabled: false,
onMapCreated: (GoogleMapController controller) {
fail("OnMapCreated should get called only once.");
},
),
));

zoomControlsEnabled = await inspector.isZoomControlsEnabled();
expect(zoomControlsEnabled, false);
}
});

testWidgets('testRotateGesturesEnabled', (WidgetTester tester) async {
final Key key = GlobalKey();
final Completer<GoogleMapInspector> inspectorCompleter =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)setTiltGesturesEnabled:(BOOL)enabled;
- (void)setTrackCameraPosition:(BOOL)enabled;
- (void)setZoomGesturesEnabled:(BOOL)enabled;
- (void)setZoomControlsEnabled:(BOOL)enabled;
- (void)setMyLocationEnabled:(BOOL)enabled;
- (void)setMyLocationButtonEnabled:(BOOL)enabled;
- (nullable NSString *)setMapStyle:(NSString *)mapStyle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,9 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
} else if ([call.method isEqualToString:@"map#isZoomGesturesEnabled"]) {
NSNumber* isZoomGesturesEnabled = @(_mapView.settings.zoomGestures);
result(isZoomGesturesEnabled);
} else if ([call.method isEqualToString:@"map#isZoomControlsEnabled"]) {
NSNumber* isZoomControlsEnabled = [NSNumber numberWithBool:NO];
result(isZoomControlsEnabled);
} else if ([call.method isEqualToString:@"map#isTiltGesturesEnabled"]) {
NSNumber* isTiltGesturesEnabled = @(_mapView.settings.tiltGestures);
result(isTiltGesturesEnabled);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class GoogleMap extends StatefulWidget {
this.minMaxZoomPreference = MinMaxZoomPreference.unbounded,
this.rotateGesturesEnabled = true,
this.scrollGesturesEnabled = true,
this.zoomControlsEnabled = true,
this.zoomGesturesEnabled = true,
this.tiltGesturesEnabled = true,
this.myLocationEnabled = false,
Expand Down Expand Up @@ -88,6 +89,12 @@ class GoogleMap extends StatefulWidget {
/// True if the map view should respond to scroll gestures.
final bool scrollGesturesEnabled;

/// True if the map view should show zoom controls. This includes two buttons
/// to zoom in and zoom out. The default value is to show zoom controls.
///
/// This is only supported on Android. And this field is silently ignored on iOS.
final bool zoomControlsEnabled;

/// True if the map view should respond to zoom gestures.
final bool zoomGesturesEnabled;

Expand Down Expand Up @@ -392,6 +399,7 @@ class _GoogleMapOptions {
this.scrollGesturesEnabled,
this.tiltGesturesEnabled,
this.trackCameraPosition,
this.zoomControlsEnabled,
this.zoomGesturesEnabled,
this.myLocationEnabled,
this.myLocationButtonEnabled,
Expand All @@ -412,6 +420,7 @@ class _GoogleMapOptions {
scrollGesturesEnabled: map.scrollGesturesEnabled,
tiltGesturesEnabled: map.tiltGesturesEnabled,
trackCameraPosition: map.onCameraMove != null,
zoomControlsEnabled: map.zoomControlsEnabled,
zoomGesturesEnabled: map.zoomGesturesEnabled,
myLocationEnabled: map.myLocationEnabled,
myLocationButtonEnabled: map.myLocationButtonEnabled,
Expand Down Expand Up @@ -440,6 +449,8 @@ class _GoogleMapOptions {

final bool trackCameraPosition;

final bool zoomControlsEnabled;

final bool zoomGesturesEnabled;

final bool myLocationEnabled;
Expand Down Expand Up @@ -471,6 +482,7 @@ class _GoogleMapOptions {
addIfNonNull('rotateGesturesEnabled', rotateGesturesEnabled);
addIfNonNull('scrollGesturesEnabled', scrollGesturesEnabled);
addIfNonNull('tiltGesturesEnabled', tiltGesturesEnabled);
addIfNonNull('zoomControlsEnabled', zoomControlsEnabled);
addIfNonNull('zoomGesturesEnabled', zoomGesturesEnabled);
addIfNonNull('trackCameraPosition', trackCameraPosition);
addIfNonNull('myLocationEnabled', myLocationEnabled);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: google_maps_flutter
description: A Flutter plugin for integrating Google Maps in iOS and Android applications.
homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter
version: 0.5.25+3
version: 0.5.26

dependencies:
flutter:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ class FakePlatformGoogleMap {

bool zoomGesturesEnabled;

bool zoomControlsEnabled;

bool trackCameraPosition;

bool myLocationEnabled;
Expand Down Expand Up @@ -351,6 +353,9 @@ class FakePlatformGoogleMap {
if (options.containsKey('zoomGesturesEnabled')) {
zoomGesturesEnabled = options['zoomGesturesEnabled'];
}
if (options.containsKey('zoomControlsEnabled')) {
zoomControlsEnabled = options['zoomControlsEnabled'];
}
if (options.containsKey('myLocationEnabled')) {
myLocationEnabled = options['myLocationEnabled'];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,35 @@ void main() {
expect(platformGoogleMap.zoomGesturesEnabled, true);
});

testWidgets('Can update zoomControlsEnabled', (WidgetTester tester) async {
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
zoomControlsEnabled: false,
),
),
);

final FakePlatformGoogleMap platformGoogleMap =
fakePlatformViewsController.lastCreatedView;

expect(platformGoogleMap.zoomControlsEnabled, false);

await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
zoomControlsEnabled: true,
),
),
);

expect(platformGoogleMap.zoomControlsEnabled, true);
});

testWidgets('Can update myLocationEnabled', (WidgetTester tester) async {
await tester.pumpWidget(
const Directionality(
Expand Down