Dodawanie mapy ze znacznikiem

Ten samouczek pokazuje, jak dodać mapę Google ze znacznikiem do aplikacji na iOS. Jest on przeznaczony dla osób, które mają podstawową lub średnio zaawansowaną wiedzę na temat języka Swift lub Objective-C oraz ogólną wiedzę na temat Xcode. Zaawansowany przewodnik po tworzeniu map znajdziesz w przewodniku dla programistów.

W tym samouczku utworzysz tę mapę. Znacznik jest umieszczony w Sydney w Australii.

Zrzut ekranu przedstawiający mapę ze znacznikiem nad Sydney

Pobierz kod

Sklonuj lub pobierz repozytorium przykładów Google Maps iOS z GitHuba.

Możesz też kliknąć ten przycisk, aby pobrać kod źródłowy:

Podaj mi kod

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        let options = GMSMapViewOptions()
        options.camera = camera
        options.frame = self.view.frame
        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}
      

Objective-C

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:6];
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = camera;
  options.frame = self.view.frame;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  mapView.myLocationEnabled = YES;
  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end
      

Rozpocznij

Swift Package Manager

Pakiet Maps SDK na iOS można zainstalować za pomocą menedżera pakietów Swift.

  1. Usuń wszystkie istniejące zależności pakietu Maps SDK na iOS.
  2. Otwórz okno terminala i przejdź do katalogu tutorials/map-with-marker.
  3. Zamknij obszar roboczy Xcode i uruchom te polecenia:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
    rm Podfile
    rm map-with-marker.xcworkspace
  4. Otwórz projekt Xcode i usuń plik podfile.
  5. Kliknij File > Add Package Dependencies (Plik > Dodaj zależności pakietu).
  6. Wpisz https://github.com/googlemaps/ios-maps-sdk jako adres URL, naciśnij Enter, aby pobrać pakiet, i kliknij Add Package (Dodaj pakiet).
  7. Może być konieczne zresetowanie pamięci podręcznej pakietów. Aby to zrobić, wybierz File > Packages > Reset Package Cache (Plik > Pakiety > Resetuj pamięć podręczną pakietów).

Uzyskiwanie klucza interfejsu API i włączanie niezbędnych interfejsów API

Aby móc wykonać zadania z tego samouczka, musisz mieć klucz interfejsu API Google, który jest uprawniony do korzystania z pakietu Maps SDK na iOS. Kliknij przycisk poniżej, aby uzyskać klucz i aktywować interfejs API.

Rozpocznij

Więcej informacji znajdziesz w artykule Pobieranie klucza interfejsu API.

Dodawanie klucza interfejsu API do aplikacji

Dodaj klucz interfejsu API do pliku AppDelegate.swift w ten sposób:

  1. Zwróć uwagę, że do pliku została dodana ta instrukcja importu:
    import GoogleMaps
  2. Zmodyfikuj ten wiersz w metodzie application(_:didFinishLaunchingWithOptions:), zastępując YOUR_API_KEY swoim kluczem interfejsu API:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Tworzenie i uruchamianie aplikacji

  1. Połącz urządzenie z iOS z komputerem lub wybierz symulator z menu schematu Xcode.
  2. Jeśli używasz urządzenia, upewnij się, że usługi lokalizacyjne są włączone. Jeśli używasz symulatora, wybierz lokalizację z menu Funkcje.
  3. W menu Xcode kliknij Product/Run (Usługa/Uruchom) lub ikonę przycisku odtwarzania.
    • Xcode utworzy aplikację, a następnie uruchomi ją na urządzeniu lub w symulatorze.
    • Powinna wyświetlić się mapa ze znacznikiem wyśrodkowana na Sydney na wschodnim wybrzeżu Australii, podobna do obrazu na tej stronie.

Rozwiązywanie problemów:

  • Jeśli nie widzisz mapy, sprawdź, czy masz klucz interfejsu API i czy został on dodany do aplikacji zgodnie z opisem powyżej. Sprawdź, czy w konsoli debugowania Xcode nie ma komunikatów o błędach dotyczących klucza interfejsu API.
  • Jeśli klucz interfejsu API został ograniczony przez identyfikator pakietu iOS, zmodyfikuj klucz, aby dodać identyfikator pakietu aplikacji: com.google.examples.map-with-marker.
  • Upewnij się, że masz dobre połączenie z Wi-Fi lub GPS-em.
  • Aby wyświetlić dzienniki i debugować aplikację, użyj narzędzi do debugowania Xcode.

Zrozumienie kodu

  1. Utworzenie mapy i ustawienie jej jako widoku w viewDidLoad().

    Swift

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
    let options = GMSMapViewOptions()
    options.camera = camera
    let mapView = GMSMapView(options: options)
    view = mapView
          

    Objective-C

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6.0];
    GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
    options.camera = camera;
    GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
    self.view = mapView;
          
  2. Dodanie znacznika do mapy w viewDidLoad().

    Swift

    // Creates a marker in the center of the map.
    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView
          

    Objective-C

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView;
          

Domyślnie pakiet Maps SDK na iOS wyświetla zawartość okna informacyjnego, gdy użytkownik kliknie znacznik. Jeśli działanie domyślne Ci odpowiada, nie musisz dodawać detektora kliknięć do znacznika.

Gratulacje! Masz aplikację na iOS, która wyświetla mapę Google ze znacznikiem wskazującym konkretną lokalizację. Wiesz też, jak używać Maps SDK na iOS.

Dalsze kroki

Dowiedz się więcej o obiekcie mapy i o tym, co możesz zrobić ze znacznikami.