Haritaya işaretçi ekleme

Bu örnekte, Avustralya'nın Sidney ve Melbourne şehirlerindeki işaretçiler için raptiyeli bir harita gösterilmektedir.

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

// Sample code for adding a marker.
class MarkersViewController: UIViewController {
  private lazy var sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private lazy var melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private lazy var mapView: GMSMapView = {
    let camera = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    return GMSMapView(frame: .zero, camera: camera)
  }()

  override func loadView() {
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.isFlat = false
    sydneyMarker.rotation = 30
    print("sydneyMarker: \(sydneyMarker)")

    let australiaMarker = GMSMarker(
      position: CLLocationCoordinate2D(latitude: -27.994401, longitude: 140.07019))
    australiaMarker.title = "Australia"
    australiaMarker.appearAnimation = .pop
    australiaMarker.isFlat = true
    australiaMarker.isDraggable = true
    australiaMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
    australiaMarker.icon = UIImage(named: "australia")
    australiaMarker.map = mapView

    mapView.selectedMarker = sydneyMarker
    navigationItem.rightBarButtonItem = UIBarButtonItem(
      barButtonSystemItem: .add, target: self, action: #selector(tapAdd))
  }

  @objc func tapAdd() {
    if sydneyMarker.map == nil {
      sydneyMarker.map = mapView
    } else {
      sydneyMarker.map = nil
    }
    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView
  }
}
      

Objective-C

#import "GoogleMapsDemos/Samples/MarkersViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@implementation MarkersViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_fadeInMarker;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.flat = NO;
  _sydneyMarker.rotation = 30.0;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  GMSMarker *australiaMarker = [[GMSMarker alloc] init];
  australiaMarker.title = @"Australia";
  australiaMarker.position = CLLocationCoordinate2DMake(-27.994401, 140.07019);
  australiaMarker.appearAnimation = kGMSMarkerAnimationPop;
  australiaMarker.flat = YES;
  australiaMarker.draggable = YES;
  australiaMarker.groundAnchor = CGPointMake(0.5, 0.5);
  australiaMarker.icon = [UIImage imageNamed:@"australia"];
  australiaMarker.map = mapView;

  _fadeInMarker = [[GMSMarker alloc] init];
  _fadeInMarker.title = @"Australia";
  _fadeInMarker.position = CLLocationCoordinate2DMake(-29.9959, 145.0719);
  _fadeInMarker.appearAnimation = kGMSMarkerAnimationFadeIn;
  _fadeInMarker.icon = [UIImage imageNamed:@"australia"];

  // Set the marker in Sydney to be selected
  mapView.selectedMarker = _sydneyMarker;

  self.view = mapView;
  self.navigationItem.rightBarButtonItem =
      [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                    target:self
                                                    action:@selector(didTapAdd)];
}

- (void)didTapAdd {
  if (_sydneyMarker.map == nil) {
    _sydneyMarker.map = (GMSMapView *)self.view;
  } else {
    _sydneyMarker.map = nil;
  }

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = (GMSMapView *)self.view;

  if (_fadeInMarker.map) {
    _fadeInMarker.map = nil;
  } else {
    _fadeInMarker.map = (GMSMapView *)self.view;
  }
}

@end
      

Tam örnek uygulamayı yerel olarak çalıştırma

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

  1. Örnekler 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 GoogleMaps dizinine inin:

    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. Xcode projesinde File (Dosya) > Add Package Dependencies'e (Paket Bağımlılıkları Ekle) gidin. URL olarak https://github.com/googlemaps/ios-maps-sdk girin, paketi çekmek için Enter tuşuna basın ve Paket Ekle'yi tıklayın.
  4. Xcode'da, derleme düğmesine basarak mevcut şemayla uygulamayı oluşturun. Derleme, Swift için SDKConstants.swift dosyasında veya Objective-C için SDKDemoAPIKey.h dosyasında API anahtarınızı girmenizi isteyen bir hata oluşturur.
  5. iOS için Haritalar SDK'sının etkinleştirildiği projenizden API anahtarı alın.
  6. 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";
  7. SDKConstants.swift dosyasında (Swift) veyaSDKDemoAPIKey.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.
  8. Projeyi oluşturup çalıştırın. iOS simülatör penceresi açılır ve Haritalar SDK'sı Demoları listesi gösterilir.
  9. iOS için Haritalar SDK'sının bir özelliğini denemek üzere gösterilen seçeneklerden birini belirleyin.
  10. GoogleMapsDemos'un konumunuza erişmesine izin vermeniz istenirse İzin ver'i seçin.