Skip to content

Commit 14d39f9

Browse files
Miguel Ruivoiskakaushik
authored andcommitted
[google_maps_flutter] enable/disable indoor view (flutter#826)
* Rebase onto master and fix conflicts * Updates example with indoor view toggle
1 parent 70f3bf1 commit 14d39f9

File tree

10 files changed

+58
-3
lines changed

10 files changed

+58
-3
lines changed

packages/google_maps_flutter/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
## 0.5.19
22

3+
4+
* Adds support for toggling Indoor View on or off.
5+
36
* Allow BitmapDescriptor scaling override
47

8+
59
## 0.5.18
610

711
* Fixed build issue on iOS.

packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/Convert.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,10 @@ static void interpretGoogleMapOptions(Object o, GoogleMapOptionsSink sink) {
308308
if (myLocationButtonEnabled != null) {
309309
sink.setMyLocationButtonEnabled(toBoolean(myLocationButtonEnabled));
310310
}
311+
final Object indoorEnabled = data.get("indoorEnabled");
312+
if (indoorEnabled != null) {
313+
sink.setIndoorEnabled(toBoolean(indoorEnabled));
314+
}
311315
}
312316

313317
/** Returns the dartMarkerId of the interpreted marker. */

packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class GoogleMapBuilder implements GoogleMapOptionsSink {
1717
private boolean trackCameraPosition = false;
1818
private boolean myLocationEnabled = false;
1919
private boolean myLocationButtonEnabled = false;
20+
private boolean indoorEnabled = true;
2021
private Object initialMarkers;
2122
private Object initialPolygons;
2223
private Object initialPolylines;
@@ -30,6 +31,7 @@ GoogleMapController build(
3031
controller.init();
3132
controller.setMyLocationEnabled(myLocationEnabled);
3233
controller.setMyLocationButtonEnabled(myLocationButtonEnabled);
34+
controller.setIndoorEnabled(indoorEnabled);
3335
controller.setTrackCameraPosition(trackCameraPosition);
3436
controller.setInitialMarkers(initialMarkers);
3537
controller.setInitialPolygons(initialPolygons);
@@ -98,6 +100,11 @@ public void setZoomGesturesEnabled(boolean zoomGesturesEnabled) {
98100
options.zoomGesturesEnabled(zoomGesturesEnabled);
99101
}
100102

103+
@Override
104+
public void setIndoorEnabled(boolean indoorEnabled) {
105+
this.indoorEnabled = indoorEnabled;
106+
}
107+
101108
@Override
102109
public void setMyLocationEnabled(boolean myLocationEnabled) {
103110
this.myLocationEnabled = myLocationEnabled;

packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ final class GoogleMapController
7272
private boolean trackCameraPosition = false;
7373
private boolean myLocationEnabled = false;
7474
private boolean myLocationButtonEnabled = false;
75+
private boolean indoorEnabled = true;
7576
private boolean disposed = false;
7677
private final float density;
7778
private MethodChannel.Result mapReadyResult;
@@ -166,6 +167,7 @@ private CameraPosition getCameraPosition() {
166167
@Override
167168
public void onMapReady(GoogleMap googleMap) {
168169
this.googleMap = googleMap;
170+
this.googleMap.setIndoorEnabled(this.indoorEnabled);
169171
googleMap.setOnInfoWindowClickListener(this);
170172
if (mapReadyResult != null) {
171173
mapReadyResult.success(null);
@@ -635,4 +637,8 @@ private int checkSelfPermission(String permission) {
635637
return context.checkPermission(
636638
permission, android.os.Process.myPid(), android.os.Process.myUid());
637639
}
640+
641+
public void setIndoorEnabled(boolean indoorEnabled) {
642+
this.indoorEnabled = indoorEnabled;
643+
}
638644
}

packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapOptionsSink.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ interface GoogleMapOptionsSink {
3232

3333
void setMyLocationButtonEnabled(boolean myLocationButtonEnabled);
3434

35+
void setIndoorEnabled(boolean indoorEnabled);
36+
3537
void setInitialMarkers(Object initialMarkers);
3638

3739
void setInitialPolygons(Object initialPolygons);

packages/google_maps_flutter/example/lib/map_ui.dart

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class MapUiBodyState extends State<MapUiBody> {
4848
bool _scrollGesturesEnabled = true;
4949
bool _tiltGesturesEnabled = true;
5050
bool _zoomGesturesEnabled = true;
51+
bool _indoorViewEnabled = true;
5152
bool _myLocationEnabled = true;
5253
bool _myLocationButtonEnabled = true;
5354
GoogleMapController _controller;
@@ -163,9 +164,21 @@ class MapUiBodyState extends State<MapUiBody> {
163164
);
164165
}
165166

167+
Widget _indoorViewToggler() {
168+
return FlatButton(
169+
child: Text('${_indoorViewEnabled ? 'disable' : 'enable'} indoor'),
170+
onPressed: () {
171+
setState(() {
172+
_indoorViewEnabled = !_indoorViewEnabled;
173+
});
174+
},
175+
);
176+
}
177+
166178
Widget _myLocationToggler() {
167179
return FlatButton(
168-
child: Text('${_myLocationEnabled ? 'disable' : 'enable'} my location'),
180+
child: Text(
181+
'${_myLocationButtonEnabled ? 'disable' : 'enable'} my location button'),
169182
onPressed: () {
170183
setState(() {
171184
_myLocationEnabled = !_myLocationEnabled;
@@ -229,6 +242,7 @@ class MapUiBodyState extends State<MapUiBody> {
229242
scrollGesturesEnabled: _scrollGesturesEnabled,
230243
tiltGesturesEnabled: _tiltGesturesEnabled,
231244
zoomGesturesEnabled: _zoomGesturesEnabled,
245+
indoorViewEnabled: _indoorViewEnabled,
232246
myLocationEnabled: _myLocationEnabled,
233247
myLocationButtonEnabled: _myLocationButtonEnabled,
234248
onCameraMove: _updateCameraPosition,
@@ -267,6 +281,7 @@ class MapUiBodyState extends State<MapUiBody> {
267281
_scrollToggler(),
268282
_tiltToggler(),
269283
_zoomToggler(),
284+
_indoorViewToggler(),
270285
_myLocationToggler(),
271286
_myLocationButtonToggler(),
272287
_nightModeToggler(),

packages/google_maps_flutter/example/lib/place_marker.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ typedef Marker MarkerUpdateAction(Marker marker);
3131

3232
class PlaceMarkerBodyState extends State<PlaceMarkerBody> {
3333
PlaceMarkerBodyState();
34-
3534
static final LatLng center = const LatLng(-33.86711, 151.1947171);
3635

3736
GoogleMapController controller;

packages/google_maps_flutter/ios/Classes/GoogleMapController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
@protocol FLTGoogleMapOptionsSink
1414
- (void)setCameraTargetBounds:(GMSCoordinateBounds *)bounds;
1515
- (void)setCompassEnabled:(BOOL)enabled;
16+
- (void)setIndoorEnabled:(BOOL)enabled;
1617
- (void)setMapType:(GMSMapViewType)type;
1718
- (void)setMinZoom:(float)minZoom maxZoom:(float)maxZoom;
1819
- (void)setPaddingTop:(float)top left:(float)left bottom:(float)bottom right:(float)right;

packages/google_maps_flutter/ios/Classes/GoogleMapController.m

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,10 @@ - (void)setCompassEnabled:(BOOL)enabled {
279279
_mapView.settings.compassButton = enabled;
280280
}
281281

282+
- (void)setIndoorEnabled:(BOOL)enabled {
283+
_mapView.indoorEnabled = enabled;
284+
}
285+
282286
- (void)setMapType:(GMSMapViewType)mapType {
283287
_mapView.mapType = mapType;
284288
}
@@ -493,7 +497,11 @@ static void InterpretMapOptions(NSDictionary* data, id<FLTGoogleMapOptionsSink>
493497
if (compassEnabled) {
494498
[sink setCompassEnabled:ToBool(compassEnabled)];
495499
}
496-
NSNumber* mapType = data[@"mapType"];
500+
id indoorEnabled = data[@"indoorEnabled"];
501+
if (indoorEnabled) {
502+
[sink setIndoorEnabled:ToBool(indoorEnabled)];
503+
}
504+
id mapType = data[@"mapType"];
497505
if (mapType) {
498506
[sink setMapType:ToMapViewType(mapType)];
499507
}

packages/google_maps_flutter/lib/src/google_map.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class GoogleMap extends StatefulWidget {
3333

3434
/// If no padding is specified default padding will be 0.
3535
this.padding = const EdgeInsets.all(0),
36+
this.indoorViewEnabled = false,
3637
this.markers,
3738
this.polygons,
3839
this.polylines,
@@ -156,6 +157,9 @@ class GoogleMap extends StatefulWidget {
156157
/// * [myLocationEnabled] parameter.
157158
final bool myLocationButtonEnabled;
158159

160+
/// Enables or disables the indoor view from the map
161+
final bool indoorViewEnabled;
162+
159163
/// Which gestures should be consumed by the map.
160164
///
161165
/// It is possible for other gesture recognizers to be competing with the map on pointer
@@ -354,6 +358,7 @@ class _GoogleMapOptions {
354358
this.myLocationEnabled,
355359
this.myLocationButtonEnabled,
356360
this.padding,
361+
this.indoorViewEnabled,
357362
});
358363

359364
static _GoogleMapOptions fromWidget(GoogleMap map) {
@@ -370,6 +375,7 @@ class _GoogleMapOptions {
370375
myLocationEnabled: map.myLocationEnabled,
371376
myLocationButtonEnabled: map.myLocationButtonEnabled,
372377
padding: map.padding,
378+
indoorViewEnabled: map.indoorViewEnabled,
373379
);
374380
}
375381

@@ -397,6 +403,8 @@ class _GoogleMapOptions {
397403

398404
final EdgeInsets padding;
399405

406+
final bool indoorViewEnabled;
407+
400408
Map<String, dynamic> toMap() {
401409
final Map<String, dynamic> optionsMap = <String, dynamic>{};
402410

@@ -423,6 +431,7 @@ class _GoogleMapOptions {
423431
padding?.bottom,
424432
padding?.right,
425433
]);
434+
addIfNonNull('indoorEnabled', indoorViewEnabled);
426435
return optionsMap;
427436
}
428437

0 commit comments

Comments
 (0)