Włączanie i wyłączanie gestów na mapie

Mapa reaguje na gesty powiększania tylko wtedy, gdy przełącznik jest włączony.

Rozpocznij

Zanim wypróbujesz przykładowy kod, musisz skonfigurować środowisko programistyczne. Więcej informacji znajdziesz w przykładach kodu pakietu Maps SDK na iOS.

Wyświetlanie kodu

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       

Uruchamianie pełnej przykładowej aplikacji lokalnie

Przykładowa aplikacja Maps SDK na iOS jest dostępna jako archiwum do pobrania w GitHub. Aby zainstalować i wypróbować przykładową aplikację pakietu Maps SDK na iOS, wykonaj te czynności.

  1. Uruchom git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git, aby sklonować repozytorium z przykładami do katalogu lokalnego.
  2. Otwórz okno terminala, przejdź do katalogu, w którym zostały sklonowane pliki przykładowe, i otwórz katalog GoogleMaps:

    Swift

    cd maps-sdk-for-ios-samples/GoogleMaps-Swift open GoogleMapsSwiftXCFrameworkDemos.xcodeproj

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps open GoogleMapsDemos.xcodeproj
  3. W projekcie Xcode kliknij File (Plik) > Add Package Dependencies (Dodaj zależności pakietu). Wpisz https://github.com/googlemaps/ios-maps-sdk jako adres URL, naciśnij Enter, aby pobrać pakiet, a następnie kliknij Dodaj pakiet.
  4. W Xcode naciśnij przycisk kompilacji, aby skompilować aplikację z bieżącym schematem. Podczas kompilacji wystąpi błąd, który spowoduje wyświetlenie prośby o wpisanie klucza interfejsu API w pliku SDKConstants.swift w przypadku języka Swift lub w pliku SDKDemoAPIKey.h w przypadku języka Objective-C.
  5. Pobierz klucz interfejsu API z projektu, w którym włączony jest pakiet Maps SDK na iOS.
  6. Edytuj plik SDKConstants.swift w przypadku języka Swift lub plik SDKDemoAPIKey.h w przypadku języka Objective-C i wklej klucz interfejsu API do definicji stałej apiKey lub kAPIKey. Na przykład:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  7. W pliku SDKConstants.swift (Swift) lubSDKDemoAPIKey.h (Objective-C) usuń ten wiersz, ponieważ służy on do rejestrowania problemu zdefiniowanego przez użytkownika:

    Swift

    #error (Register for API Key and insert here. Then delete this line.)

    Objective-C

    #error Register for API Key and insert here.
  8. Skompiluj i uruchom projekt. Pojawi się okno symulatora iOS z listą demonstracji pakietu Maps SDK.
  9. Wybierz jedną z wyświetlonych opcji, aby wypróbować funkcję pakietu Maps SDK na iOS.
  10. Jeśli pojawi się pytanie, czy zezwolić aplikacji GoogleMapsDemos na dostęp do Twojej lokalizacji, kliknij Zezwól.