Mengaktifkan dan menonaktifkan gestur peta

Peta hanya 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 sampel, dan lihat perincian 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 compile 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. Jika Anda belum memiliki kunci API, ikuti petunjuk untuk menyiapkan project di Konsol Google Cloud dan mendapatkan kunci API. Saat mengonfigurasi kunci di Cloud Console, Anda dapat membatasi kunci ke ID paket aplikasi contoh untuk memastikan hanya aplikasi Anda yang dapat menggunakan kunci tersebut. ID paket default aplikasi contoh SDK adalah com.example.GoogleMapsDemos.
  5. Edit file SDKConstants.swift untuk Swift atau file SDKDemoAPIKey.h untuk Objective-C dan 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 muncul, menampilkan daftar Maps SDK Demos.
  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 Allow.