שנתחיל?
לפני שתוכלו לנסות את הקוד לדוגמה, עליכם להגדיר את סביבת הפיתוח שלכם. מידע נוסף זמין במאמר דוגמאות קוד ל-iOS ב-SDK של מפות Google.
הצגת הקוד
Swift
import GoogleMaps import UIKit class GestureControlViewController: UIViewController { private let holderHeight: CGFloat = 60 private let zoomLabelInset: CGFloat = 16 private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -25.5605, longitude: 133.605097, zoom: 3) return GMSMapView(frame: .zero, camera: camera) }() private lazy var zoomSwitch: UISwitch = UISwitch(frame: .zero) override func viewDidLoad() { super.viewDidLoad() view.addSubview(mapView) let holder = UIView(frame: .zero) holder.backgroundColor = UIColor(white: 1, alpha: 0.8) view.addSubview(holder) let zoomLabel = UILabel(frame: .zero) zoomLabel.text = "Zoom gestures" zoomLabel.font = .boldSystemFont(ofSize: 18) holder.addSubview(zoomLabel) // Control zooming. holder.addSubview(zoomSwitch) zoomSwitch.addTarget(self, action: #selector(toggleZoom), for: .valueChanged) zoomSwitch.isOn = true [mapView, holder, zoomLabel, zoomSwitch].forEach({ $0.translatesAutoresizingMaskIntoConstraints = false }) NSLayoutConstraint.activate([ mapView.leftAnchor.constraint(equalTo: view.leftAnchor), mapView.rightAnchor.constraint(equalTo: view.rightAnchor), mapView.topAnchor.constraint(equalTo: view.topAnchor), mapView.bottomAnchor.constraint(equalTo: view.bottomAnchor), holder.heightAnchor.constraint(equalToConstant: holderHeight), holder.centerXAnchor.constraint(equalTo: view.centerXAnchor), holder.widthAnchor.constraint(equalTo: view.widthAnchor), zoomLabel.leftAnchor.constraint(equalTo: holder.leftAnchor, constant: zoomLabelInset), zoomLabel.centerYAnchor.constraint(equalTo: holder.centerYAnchor), zoomSwitch.rightAnchor.constraint(equalTo: holder.rightAnchor, constant: -zoomLabelInset), zoomSwitch.centerYAnchor.constraint( equalTo: holder.centerYAnchor), ]) NSLayoutConstraint.activate([ holder.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor) ]) } @objc func toggleZoom() { mapView.settings.zoomGestures = zoomSwitch.isOn } }
Objective-C
#import "GoogleMapsDemos/Samples/GestureControlViewController.h" #import <GoogleMaps/GoogleMaps.h> @implementation GestureControlViewController { GMSMapView *_mapView; UISwitch *_zoomSwitch; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-25.5605 longitude:133.605097 zoom:3]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; _mapView.accessibilityIdentifier = @"gestureControlDemoMapView"; self.view = [[UIView alloc] initWithFrame:CGRectZero]; [self.view addSubview:_mapView]; UIView *holder = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 59)]; holder.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; holder.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8f]; [self.view addSubview:holder]; // Zoom label. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(16, 16, 200, 29)]; label.text = @"Zooming?"; label.font = [UIFont boldSystemFontOfSize:18.0f]; label.textAlignment = NSTextAlignmentLeft; label.backgroundColor = [UIColor clearColor]; label.layer.shadowColor = [[UIColor whiteColor] CGColor]; label.layer.shadowOffset = CGSizeMake(0.0f, 1.0f); label.layer.shadowOpacity = 1.0f; label.layer.shadowRadius = 0.0f; [holder addSubview:label]; // Control zooming. _zoomSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(-90, 16, 0, 0)]; _zoomSwitch.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; [_zoomSwitch addTarget:self action:@selector(didChangeZoomSwitch) forControlEvents:UIControlEventValueChanged]; _zoomSwitch.on = YES; [holder addSubview:_zoomSwitch]; } - (void)didChangeZoomSwitch { _mapView.settings.zoomGestures = _zoomSwitch.isOn; } @end
הפעלה מקומית של האפליקציה המלאה לדוגמה
האפליקציה לדוגמה של SDK של מפות ל-iOS זמינה כארכיון להורדה ב-GitHub. כך מתקינים את האפליקציה לדוגמה של Maps SDK ל-iOS ומנסים אותה.
- מריצים את הפקודה
git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git
כדי להעתיק את המאגר לדוגמה לספרייה מקומית. פותחים חלון טרמינל, עוברים לספרייה שבה קלונתם את קובצי הדוגמה ומבצעים התמקדות בספרייה 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
- ב-Xcode, לוחצים על לחצן הידור (compile) כדי
ליצור את האפליקציה
עם הסכמה הנוכחית. תופיע הודעת שגיאה ב-build עם בקשה להזין את מפתח ה-API בקובץ
SDKConstants.swift
עבור Swift או בקובץSDKDemoAPIKey.h
עבור Objective-C. - אם עדיין אין לכם מפתח API, עליכם לפעול לפי ההוראות כדי להגדיר פרויקט במסוף Google Cloud ולקבל מפתח API. כשמגדירים את המפתח במסוף Cloud, אפשר להגביל את המפתח למזהה החבילה של האפליקציה לדוגמה, כדי לוודא שרק האפליקציה שלכם תוכל להשתמש במפתח. מזהה החבילה שמוגדר כברירת מחדל באפליקציית הדוגמאות של ה-SDK הוא
com.example.GoogleMapsDemos
. - עורכים את הקובץ
SDKConstants.swift
עבור Swift או את הקובץSDKDemoAPIKey.h
עבור Objective-C, ומדביקים את מפתח ה-API בהגדרה של הקבועapiKey
אוkAPIKey
. לדוגמה:Swift
static let apiKey = "YOUR_API_KEY"
Objective-C
static NSString *const kAPIKey = @"YOUR_API_KEY";
- בקובץ
SDKConstants.swift
(Swift) או בקובץSDKDemoAPIKey.h
(Objective-C), מסירים את השורה הבאה, כי היא משמשת לרישום הבעיה שהוגדרה על ידי המשתמש:Swift
#error (Register for API Key and insert here. Then delete this line.)
Objective-C
#error Register for API Key and insert here.
- מריצים את הפרויקט. חלון הסימולטור של iOS מופיע עם רשימה של דמואים של SDK של מפות.
- בוחרים באחת מהאפשרויות שמוצגות כדי להתנסות בתכונה של SDK של מפות ל-iOS.
- אם מופיעה בקשה לתת ל-GoogleMapsDemos גישה למיקום שלכם, בוחרים באפשרות אישור.