Konumum Düğmesini Etkinleştir

Konumum düğmesini etkinleştirin resmi.

Konumum düğmesi, harita görünümünün sağ alt köşesinde gösterilir. Kullanıcı düğmeye dokunduğunda harita, kullanıcının mevcut konumuna kaydırılır.

Başlayın

Örnek kodu denemeden önce geliştirme ortamınızı yapılandırmanız gerekir. Daha fazla bilgi için iOS için Haritalar SDK'sı kod örnekleri başlıklı makaleyi inceleyin.

Kodu görüntüleme

Swift

import GoogleMaps
import UIKit

class MyLocationViewController: UIViewController {

  private let cameraLatitude: CLLocationDegrees = -33.868

  private let cameraLongitude: CLLocationDegrees = 151.2086

  private let cameraZoom: Float = 12

  lazy var mapView: GMSMapView = {
    let camera = GMSCameraPosition(
      latitude: cameraLatitude, longitude: cameraLongitude, zoom: cameraZoom)
    return GMSMapView(frame: .zero, camera: camera)
  }()

  var observation: NSKeyValueObservation?
  var location: CLLocation? {
    didSet {
      guard oldValue == nil, let firstLocation = location else { return }
      mapView.camera = GMSCameraPosition(target: firstLocation.coordinate, zoom: 14)
    }
  }

  override func viewDidLoad() {
    super.viewDidLoad()

    mapView.delegate = self
    mapView.settings.compassButton = true
    mapView.settings.myLocationButton = true
    mapView.isMyLocationEnabled = true
    view = mapView

    // Listen to the myLocation property of GMSMapView.
    observation = mapView.observe(\.myLocation, options: [.new]) {
      [weak self] mapView, _ in
      self?.location = mapView.myLocation
    }
  }

  deinit {
    observation?.invalidate()
  }
}

extension MyLocationViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, didTapMyLocation location: CLLocationCoordinate2D) {
    let alert = UIAlertController(
      title: "Location Tapped",
      message: "Current location: <\(location.latitude), \(location.longitude)>",
      preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .default))
    present(alert, animated: true)
  }
}
      

Objective-C

#import "GoogleMapsDemos/Samples/MyLocationViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@implementation MyLocationViewController {
  GMSMapView *_mapView;
  BOOL _firstLocationUpdate;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868
                                                          longitude:151.2086
                                                               zoom:12];

  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  _mapView.delegate = self;
  _mapView.settings.compassButton = YES;
  _mapView.settings.myLocationButton = YES;

  // Listen to the myLocation property of GMSMapView.
  [_mapView addObserver:self
             forKeyPath:@"myLocation"
                options:NSKeyValueObservingOptionNew
                context:NULL];

  self.view = _mapView;

  // Ask for My Location data after the map has already been added to the UI.
  GMSMapView *mapView = _mapView;
  dispatch_async(dispatch_get_main_queue(), ^{
    mapView.myLocationEnabled = YES;
  });
}

- (void)mapView:(GMSMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location {
  NSString *message = [NSString stringWithFormat:@"My Location Dot Tapped at: [lat: %f, lng: %f]",
                                                 location.latitude, location.longitude];
  UIAlertController *alertController =
      [UIAlertController alertControllerWithTitle:@"Location Tapped"
                                          message:message
                                   preferredStyle:UIAlertControllerStyleAlert];
  UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK"
                                                     style:UIAlertActionStyleDefault
                                                   handler:^(UIAlertAction *action){
                                                   }];
  [alertController addAction:okAction];
  [self presentViewController:alertController animated:YES completion:nil];
}

- (void)dealloc {
  [_mapView removeObserver:self forKeyPath:@"myLocation" context:NULL];
}

#pragma mark - KVO updates

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {
  if (!_firstLocationUpdate) {
    // If the first location update has not yet been received, then jump to that location.
    _firstLocationUpdate = YES;
    CLLocation *location = [change objectForKey:NSKeyValueChangeNewKey];
    _mapView.camera = [GMSCameraPosition cameraWithTarget:location.coordinate zoom:14];
  }
}

@end
      

Örnek uygulamanın tamamını yerel olarak çalıştırma

iOS için Haritalar SDK'sı örnek uygulamasını GitHub'dan indirme arşivi olarak indirebilirsiniz. iOS için Haritalar SDK'sı örnek uygulamasını yükleyip denemek üzere aşağıdaki adımları uygulayın.

  1. Örnek deposunu yerel bir dizine klonlamak için git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git komutunu çalıştırın.
  2. Bir terminal penceresi açın, örnek dosyaları klonladığınız dizine gidin ve GoogleHaritalar dizinini ayrıntılı olarak inceleyin:

    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. Mevcut şema ile uygulamayı derlemek için Xcode'da derle düğmesine basın. Derleme işlemi, API anahtarınızı Swift için SDKConstants.swift dosyasına veya Objective-C için SDKDemoAPIKey.h dosyasına girmenizi isteyen bir hata oluşturur.
  4. Henüz API anahtarınız yoksa Google Cloud Console'da proje oluşturmak ve API anahtarı almak için talimatları uygulayın. Cloud Console'da anahtarı yapılandırırken anahtarı örnek uygulamanın paket tanımlayıcısı ile sınırlandırarak anahtarın yalnızca uygulamanızın kullanabildiğinden emin olabilirsiniz. SDK örnekleri uygulamasının varsayılan paket tanımlayıcısı com.example.GoogleMapsDemos'tür.
  5. Swift için SDKConstants.swift dosyasını veya Objective-C için SDKDemoAPIKey.h dosyasını düzenleyin ve API anahtarınızı apiKey veya kAPIKey sabitinin tanımına yapıştırın. Örneğin:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. SDKConstants.swift dosyasında (Swift) veya SDKDemoAPIKey.h dosyasında (Objective-C), kullanıcı tanımlı sorunu kaydetmek için kullanıldığından aşağıdaki satırı kaldırın:

    Swift

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

    Objective-C

    #error Register for API Key and insert here.
  7. Projeyi derleyip çalıştırın. Haritalar SDK'sı Demoları'nın listesini gösteren iOS simülasyon penceresi görünür.
  8. iOS için Haritalar SDK'sının bir özelliğini denemek üzere görüntülenen seçeneklerden birini belirleyin.
  9. GoogleMapsDemos'un konumunuza erişmesine izin vermeniz istenirse İzin ver'i seçin.