Dodaj mapę ze znacznikiem

Ten samouczek pokazuje, jak dodać do urządzenia z iOS prostą mapę Google ze znacznikiem aplikacji. Jest odpowiedni dla osób początkujących lub średnio zaawansowanych w języku Swift oraz Objective-C i ogólną znajomość Xcode. Zaawansowany przewodnik tworzenia map, przeczytaj wskazówki programistów Google.

Za pomocą tego samouczka utworzysz następującą mapę. Znacznik znajduje się w Sydney, Australia.

Zrzut ekranu przedstawiający mapę ze znacznikiem nad Sydney

Pobierz kod

Skopiuj lub pobierz plik repozytorium przykładowych Map Google na iOS na GitHubie.

Możesz też kliknąć następujący przycisk, aby pobrać kod źródłowy:

Podaj mi kod

Swift

/*
 * Copyright 2020 Google Inc. All rights reserved.
 *
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 * file except in compliance with the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

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 mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
        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

/*
* Copyright 2020 Google Inc. All rights reserved.
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

#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];
  GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
  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

Menedżer pakietów Swift

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

  1. Upewnij się, że wszystkie zależności od pakietu Maps SDK na iOS zostały usunięte.
  2. Otwórz okno terminala i przejdź do katalogu tutorials/map-with-marker.
  3. Zamknij obszar roboczy Xcode i uruchom następujące 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. Przejdź do Plik > Dodaj zależności pakietów.
  6. Jako URL wpisz https://github.com/googlemaps/ios-maps-sdk, naciśnij Enter, aby pobrać pakiet, i kliknij Dodaj pakiet.
  7. Może być konieczne zresetowanie pamięci podręcznej pakietów poprzez kliknięcie Plik > Pakiety > Zresetuj pamięć podręczną pakietów.

Używaj CocoaPods

  1. Pobierz i zainstaluj Xcode wersji 15.0 lub nowszej.
  2. Jeśli nie masz jeszcze subskrypcji CocoaPods, zainstaluj ją w systemie macOS, uruchamiając w terminalu to polecenie:
    sudo gem install cocoapods
  3. Przejdź do katalogu tutorials/map-with-marker.
  4. Uruchom polecenie pod install. Spowoduje to zainstalowanie pakietu Maps SDK określonego w tabeli Podfile wraz z wszystkimi zależnościami.
  5. Uruchom pod outdated, aby porównać wersję zainstalowanego poda z wszystkimi nowymi aktualizacjami. Po wykryciu nowej wersji uruchom polecenie pod update, aby zaktualizować Podfile i zainstalować najnowszy pakiet SDK. Więcej informacji znajdziesz w przewodniku CocoaPods.
  6. Otwórz (kliknij dwukrotnie) w projekcie plik map-with-marker.xcworkspace aby otworzyć go w Xcode. Aby otworzyć projekt, musisz użyć pliku .xcworkspace.

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

Aby ukończyć ten samouczek, potrzebujesz klucza interfejsu API Google z uprawnieniami do użyj pakietu Maps SDK na iOS. Kliknij przycisk, aby pobrać: klucz i aktywuj interfejs API.

Pierwsze kroki

Więcej informacji: Uzyskaj klucz interfejsu API.

Dodawanie klucza interfejsu API do aplikacji

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

  1. Pamiętaj, że do pliku dodano instrukcję importu:
    import GoogleMaps
  2. Edytuj ten wiersz w application(_:didFinishLaunchingWithOptions:) , zastępując YOUR_API_KEY Twoim 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 są włączone usługi lokalizacyjne. Jeśli używasz symulatora, wybierz lokalizację w sekcji Funkcje .
  3. W Xcode kliknij w menu opcję Product/Run (Produkt/Uruchom). ikonę przycisku).
    • Xcode tworzy aplikację, a następnie uruchamia ją na urządzeniu lub w symulatorze.
    • Powinna wyświetlić się mapa ze znacznikiem wyśrodkowana na Sydney na wschodnim wybrzeżu Australii, podobnie jak na tej stronie.

Rozwiązywanie problemów:

  • Jeśli nie widzisz mapy, sprawdź, czy masz otrzymany klucz interfejsu API oraz do aplikacji, w sposób opisany powyżej. Sprawdź Konsola debugowania Xcode do wyświetlania komunikatów o błędach dotyczących klucza interfejsu API.
  • Jeśli klucz API został ograniczony przez identyfikator pakietu na iOS, edytuj aby dodać identyfikator pakietu aplikacji: com.google.examples.map-with-marker
  • Upewnij się, że masz dobre połączenie z siecią Wi-Fi lub GPS.
  • Skorzystaj z narzędzi do debugowania Xcode. aby wyświetlić logi i debugować aplikację.

Zrozumienie kodu

  1. Utwórz mapę i ustaw ją jako widok w usłudze 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 mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    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];
    GMSMapView *mapView = [[GMSMapView alloc] initWithFrame: CGRectZero camera:camera];
    self.view = mapView;
          
  2. Dodaj znacznik do mapy w usłudze 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 treść informacji gdy użytkownik kliknie znacznik. Nie ma potrzeby dodawania detektora kliknięć wybierz znacznik, jeśli chcesz korzystać z działania domyślnego.

Gratulacje! Masz aplikację na iOS, która wyświetla mapę Google z znacznik w celu wskazania konkretnej lokalizacji. Wiesz już również, jak korzystać z Maps SDK na iOS.

Dalsze kroki

Dowiedz się więcej o obiekcie mapy i działaniach co można zrobić ze znacznikami.