Rozpocznij
Zanim spróbujesz użyć przykładowego kodu, musisz skonfigurować środowisko programistyczne. Więcej informacji znajdziesz w próbkach kodu Maps SDK na iOS.
Wyświetlanie kodu
Swift
import GoogleMaps import UIKit // Sample code for GeoCoder service. class GeocoderViewController: UIViewController { private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) return GMSMapView(frame: .zero, camera: camera) }() private lazy var geocoder = GMSGeocoder() override func loadView() { view = mapView mapView.delegate = self } } extension GeocoderViewController: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) { // On a long press, reverse geocode this location. geocoder.reverseGeocodeCoordinate(coordinate) { response, error in guard let address = response?.firstResult() else { let errorMessage = error.map { String(describing: $0) } ?? "<no error>" print( "Could not reverse geocode point (\(coordinate.latitude), \(coordinate.longitude)): \(errorMessage)" ) return } print("Geocoder result: \(address)") let marker = GMSMarker(position: address.coordinate) marker.appearAnimation = .pop marker.map = mapView guard let lines = address.lines, let title = lines.first else { return } marker.title = title if lines.count > 1 { marker.snippet = lines[1] } } } }
Objective-C
#import "GoogleMapsDemos/Samples/GeocoderViewController.h" #import <GoogleMaps/GoogleMaps.h> @implementation GeocoderViewController { GMSMapView *_mapView; GMSGeocoder *_geocoder; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 longitude:151.2086 zoom:12]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.delegate = self; _geocoder = [[GMSGeocoder alloc] init]; self.view = _mapView; } - (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate { // On a long press, reverse geocode this location. __weak __typeof__(self) weakSelf = self; GMSReverseGeocodeCallback handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { [weakSelf handleResponse:response coordinate:coordinate error:error]; }; [_geocoder reverseGeocodeCoordinate:coordinate completionHandler:handler]; } - (void)handleResponse:(nullable GMSReverseGeocodeResponse *)response coordinate:(CLLocationCoordinate2D)coordinate error:(nullable NSError *)error { GMSAddress *address = response.firstResult; if (address) { NSLog(@"Geocoder result: %@", address); GMSMarker *marker = [GMSMarker markerWithPosition:address.coordinate]; NSArray<NSString *> *lines = [address lines]; marker.title = [lines firstObject]; if (lines.count > 1) { marker.snippet = [lines objectAtIndex:1]; } marker.appearAnimation = kGMSMarkerAnimationPop; marker.map = _mapView; } else { NSLog(@"Could not reverse geocode point (%f,%f): %@", coordinate.latitude, coordinate.longitude, error); } } @end
Lokalne uruchamianie pełnej przykładowej aplikacji
Przykładowa aplikacja Maps SDK na iOS jest dostępna jako archiwum do pobrania w GitHub. Aby zainstalować i wypróbować przykładową aplikację Maps SDK na iOS, wykonaj te czynności.
- Uruchom
git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git
, aby skopiować repozytorium z przykładami do katalogu lokalnego. Otwórz okno terminala, przejdź do katalogu, w którym sklonowano przykładowe pliki, a potem przejdź do katalogu GoogleMaps:
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
- W Xcode kliknij przycisk kompilacji, aby skompilować aplikację z bieżącym schematem. Kompilacja powoduje błąd i wyświetla prośbę o wpisanie klucza interfejsu API w pliku
SDKConstants.swift
(Swift) lubSDKDemoAPIKey.h
(Objective-C). - Jeśli nie masz jeszcze klucza interfejsu API, wykonaj te instrukcje, aby skonfigurować projekt w Konsoli Google Cloud i uzyskać klucz interfejsu API. Podczas konfigurowania klucza w konsoli Cloud możesz ograniczyć dostęp do niego do identyfikatora pakietu przykładowej aplikacji, aby mieć pewność, że tylko Twoja aplikacja będzie mogła z niego korzystać. Domyślny identyfikator pakietu aplikacji z próbkami pakietu SDK to
com.example.GoogleMapsDemos
. - Zmodyfikuj plik
SDKConstants.swift
w przypadku Swifta lub plikSDKDemoAPIKey.h
w przypadku Objective-C i wklej klucz interfejsu API w definicji stałejapiKey
lubkAPIKey
. Na przykład:Swift
static let apiKey = "YOUR_API_KEY"
Objective-C
static NSString *const kAPIKey = @"YOUR_API_KEY";
- W pliku
SDKConstants.swift
(Swift) lubSDKDemoAPIKey.h
(Objective-C) usuń ten wiersz, ponieważ służy on do rejestrowania problemów zdefiniowanych przez użytkownika:Swift
#error (Register for API Key and insert here. Then delete this line.)
Objective-C
#error Register for API Key and insert here.
- Utwórz i uruchom projekt. Pojawi się okno symulatora iOS z listą demo pakietu Maps SDK.
- Wybierz jedną z wyświetlonych opcji, aby wypróbować funkcję pakietu SDK Maps na iOS.
- Jeśli pojawi się prośba o zezwolenie aplikacji GoogleMapsDemos na dostęp do Twojej lokalizacji, wybierz Zezwól.