AI-generated Key Takeaways
-
This webpage provides code samples demonstrating how to control zoom gestures on a Google Map using a switch.
-
When the switch is toggled on, users can zoom in and out of the map using gestures.
-
To run the sample code, you need to configure your development environment and obtain a Google Maps API key.
-
The webpage provides step-by-step instructions on how to set up and run the sample app locally.
Get started
Before you can try the sample code, you must configure your development environment. For more information, see Maps SDK for iOS code samples .
View the code
Swift
import GoogleMaps import UIKit class GestureControlViewController : UIViewController { private let holderHeight : CGFloat = 60 private let zoomLabelInset : CGFloat = 16 private lazy var mapView : GMSMapView = { let camera = GMSCameraPosition ( latitude : - 25.5605 , longitude : 133.605097 , zoom : 3 ) return GMSMapView ( frame : . zero , camera : camera ) }() private lazy var zoomSwitch : UISwitch = UISwitch ( frame : . zero ) override func viewDidLoad () { super . viewDidLoad () view . addSubview ( mapView ) let holder = UIView ( frame : . zero ) holder . backgroundColor = UIColor ( white : 1 , alpha : 0.8 ) view . addSubview ( holder ) let zoomLabel = UILabel ( frame : . zero ) zoomLabel . text = "Zoom gestures" zoomLabel . font = . boldSystemFont ( ofSize : 18 ) holder . addSubview ( zoomLabel ) // Control zooming. holder . addSubview ( zoomSwitch ) zoomSwitch . addTarget ( self , action : #selector ( toggleZoom ), for : . valueChanged ) zoomSwitch . isOn = true [ mapView , holder , zoomLabel , zoomSwitch ]. forEach ({ $0 . translatesAutoresizingMaskIntoConstraints = false }) NSLayoutConstraint . activate ([ mapView . leftAnchor . constraint ( equalTo : view . leftAnchor ), mapView . rightAnchor . constraint ( equalTo : view . rightAnchor ), mapView . topAnchor . constraint ( equalTo : view . topAnchor ), mapView . bottomAnchor . constraint ( equalTo : view . bottomAnchor ), holder . heightAnchor . constraint ( equalToConstant : holderHeight ), holder . centerXAnchor . constraint ( equalTo : view . centerXAnchor ), holder . widthAnchor . constraint ( equalTo : view . widthAnchor ), zoomLabel . leftAnchor . constraint ( equalTo : holder . leftAnchor , constant : zoomLabelInset ), zoomLabel . centerYAnchor . constraint ( equalTo : holder . centerYAnchor ), zoomSwitch . rightAnchor . constraint ( equalTo : holder . rightAnchor , constant : - zoomLabelInset ), zoomSwitch . centerYAnchor . constraint ( equalTo : holder . centerYAnchor ), ]) NSLayoutConstraint . activate ([ holder . topAnchor . constraint ( equalTo : self . view . safeAreaLayoutGuide . topAnchor ) ]) } @objc func toggleZoom () { mapView . settings . zoomGestures = zoomSwitch . isOn } }
Objective-C
#import "GoogleMapsDemos/Samples/GestureControlViewController.h" #import <GoogleMaps/GoogleMaps.h> @implementation GestureControlViewController { GMSMapView * _mapView ; UISwitch * _zoomSwitch ; } - ( void ) viewDidLoad { [ super viewDidLoad ]; GMSCameraPosition * camera = [ GMSCameraPosition cameraWithLatitude : -25.5605 longitude : 133.605097 zoom : 3 ]; _mapView = [ GMSMapView mapWithFrame : CGRectZero camera : camera ]; _mapView . autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ; _mapView . accessibilityIdentifier = @"gestureControlDemoMapView" ; self . view = [[ UIView alloc ] initWithFrame : CGRectZero ]; [ self . view addSubview : _mapView ]; UIView * holder = [[ UIView alloc ] initWithFrame : CGRectMake ( 0 , 0 , 0 , 59 )]; holder . autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin ; holder . backgroundColor = [ UIColor colorWithRed : 1.0 green : 1.0 blue : 1.0 alpha : 0.8f ]; [ self . view addSubview : holder ]; // Zoom label. UILabel * label = [[ UILabel alloc ] initWithFrame : CGRectMake ( 16 , 16 , 200 , 29 )]; label . text = @"Zooming?" ; label . font = [ UIFont boldSystemFontOfSize : 18.0f ]; label . textAlignment = NSTextAlignmentLeft ; label . backgroundColor = [ UIColor clearColor ]; label . layer . shadowColor = [[ UIColor whiteColor ] CGColor ]; label . layer . shadowOffset = CGSizeMake ( 0.0f , 1.0f ); label . layer . shadowOpacity = 1.0f ; label . layer . shadowRadius = 0.0f ; [ holder addSubview : label ]; // Control zooming. _zoomSwitch = [[ UISwitch alloc ] initWithFrame : CGRectMake ( -90 , 16 , 0 , 0 )]; _zoomSwitch . autoresizingMask = UIViewAutoresizingFlexibleLeftMargin ; [ _zoomSwitch addTarget : self action : @selector ( didChangeZoomSwitch ) forControlEvents : UIControlEventValueChanged ]; _zoomSwitch . on = YES ; [ holder addSubview : _zoomSwitch ]; } - ( void ) didChangeZoomSwitch { _mapView . settings . zoomGestures = _zoomSwitch . isOn ; } @ end . m

