כדי להגדיר סגנון מבוסס-נתונים למערכי נתונים, פועלים לפי השלבים הבאים.
קבלת מפתח API והפעלת ממשקי API
כדי להשתמש בעיצוב מבוסס-נתונים למערכי נתונים, צריך: פרויקט ב-Cloud עם חשבון לחיוב, ולהפעיל גם את ה-SDK של מפות Google ל-iOS וגם את ה-API של מערכי הנתונים של מפות Google. מידע נוסף זמין במאמרים הבאים:
יצירת מזהה מפה
mapID הוא מזהה ייחודי שמייצג מופע יחיד של מפת Google. במסוף Google Cloud תוכלו ליצור מזהי מפות ולעדכן סגנון המשויך למזהה המפה בכל שלב.
יצירת סגנון מפה חדש
כדי ליצור סגנון מפה חדש, פועלים לפי ההוראות במאמר ניהול סגנונות מפה כדי ליצור את הסגנון. בסיום התהליך, משייכים את הסגנון למזהה המפה החדש שנוצר.
עדכון הקוד של אתחול המפה
כדי לבצע את השלב הזה צריך לשייך מזהה מפה לסגנון שבו מופעלת שכבת מאפיינים אחת או יותר. כדי לוודא שמזהה המפה מוגדר בצורה נכונה במסוף Cloud, בודקים איך הוא מוגדר בקטע ניהול מפות Google.
Swift
// A map ID using a style with one or more feature layers enabled let mapID = GMSMapID(identifier: "YOUR_MAP_ID") let mapView = GMSMapView(frame: .zero, mapID: mapID, camera: GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7))
Objective-C
// A map ID using a style with one or more feature layers enabled GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"MAP_ID"]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:[GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7]];
בדיקת יכולות המפה
סגנון מבוסס-נתונים למערכי נתונים דורש יכולות שמופעלות במסוף Google Cloud ומשויכות למזהה מפה. מכיוון שמזהי המפות עשויים להשתנות, תוכלו להפעיל את mapView.mapCapabilities
ב-GMSMapView
כדי לבדוק אם יכולת מסוימת (למשל סגנון מבוסס-נתונים) זמינה לפני הקריאה אליה.
תוכלו גם להירשם ל-GMSViewDelegate
כדי לזהות שינויים ביכולות של המפה.
הדוגמה הזו ממחישה איך להשתמש בפרוטוקול כדי לבדוק את הדרישות של סגנון מבוסס-נתונים.
Swift
class SampleViewController: UIViewController { private lazy var mapView: GMSMapView = GMSMapView(frame: .zero, mapID: GMSMapID(identifier: "YOUR_MAP_ID"), camera: GMSCameraPosition(latitude: 40, longitude: -80, zoom: 7)) override func loadView() { self.view = mapView mapView.delegate = self } } extension SampleViewController: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didChange mapCapabilities: GMSMapCapabilityFlags) { if (!mapCapabilities.contains(.dataDrivenStyling)) { // Data-driven styling is *not* available, add a fallback. // Existing feature layers are also unavailable. } } }
Objective-C
@interface SampleViewController: UIViewController <GMSMapViewDelegate> @end @implementation SampleViewController - (void)loadView { GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:[GMSMapID mapIDWithIdentifier:@"MAP_ID"] camera:[GMSCameraPosition cameraWithLatitude:40 longitude:-80 zoom:7]]; mapView.delegete = self; self.view = mapView; } - (void)mapView:(GMSMapView *)mapView didChangeMapCapabilities:(GMSMapCapabilityFlags)mapCapabilities { if (!(mapCapabilities & GMSMapCapabilityFlagsDataDrivenStyling)) { // Data-driven styling is *not* available, add a fallback. // Existing feature layers are also unavailable. } } @end