Mengaktifkan dan menonaktifkan gestur peta

Peta merespons gestur zoom hanya jika tombol diaktifkan.

Mulai

Anda harus mengonfigurasi lingkungan pengembangan Anda sebelum dapat mencoba kode contoh. Untuk informasi selengkapnya, lihat contoh kode Maps SDK for iOS.

Melihat kode

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       

Menjalankan aplikasi contoh lengkap secara lokal

Aplikasi contoh Maps SDK for iOS tersedia sebagai arsip download dari GitHub. Ikuti langkah-langkah berikut untuk menginstal dan mencoba aplikasi contoh Maps SDK for iOS.

  1. Jalankan git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git untuk meng-clone repositori contoh ke direktori lokal.
  2. Buka jendela terminal, buka direktori tempat Anda meng-clone file contoh, lalu buka direktori GoogleMaps:

    Swift

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift pod install open GoogleMapsSwiftDemos.xcworkspace

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps pod install open GoogleMapsDemos.xcworkspace
  3. Di Xcode, tekan tombol kompilasi untuk mem-build aplikasi dengan skema saat ini. Build akan menghasilkan error, yang meminta Anda memasukkan kunci API dalam file SDKConstants.swift untuk Swift atau file SDKDemoAPIKey.h untuk Objective-C.
  4. Dapatkan kunci API dari project Anda dengan Maps SDK for iOS diaktifkan.
  5. Edit file SDKConstants.swift untuk Swift atau file SDKDemoAPIKey.h untuk Objective-C, lalu tempel kunci API Anda ke dalam definisi konstanta apiKey atau kAPIKey. Contoh:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. Dalam file SDKConstants.swift (Swift) atau file SDKDemoAPIKey.h (Objective-C), hapus baris berikut, karena baris ini digunakan untuk mendaftarkan masalah yang ditentukan pengguna:

    Swift

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

    Objective-C

    #error Register for API Key and insert here.
  7. Bangun dan jalankan proyek. Jendela simulator iOS akan muncul, yang menampilkan daftar Demo Maps SDK.
  8. Pilih salah satu opsi yang ditampilkan, untuk bereksperimen dengan fitur Maps SDK for iOS.
  9. Jika diminta untuk mengizinkan GoogleMapsDemos mengakses lokasi Anda, pilih Izinkan.