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.
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:
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.
- Usuń wszystkie istniejące zależności pakietu Maps SDK na iOS.
- Otwórz okno terminala i przejdź do katalogu
tutorials/map-with-marker. - 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
- Otwórz projekt Xcode i usuń plik podfile.
- Kliknij File > Add Package Dependencies (Plik > Dodaj zależności pakietu).
- Wpisz https://github.com/googlemaps/ios-maps-sdk jako adres URL, naciśnij Enter, aby pobrać pakiet, i kliknij Add Package (Dodaj pakiet).
- 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.
RozpocznijWię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:
- Zwróć uwagę, że do pliku została dodana ta instrukcja importu:
import GoogleMaps
- 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
- Połącz urządzenie z iOS z komputerem lub wybierz symulator z menu schematu Xcode.
- 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.
- 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
- 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;
- 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.