תחילת העבודה

בחירת פלטפורמה: Android iOS JavaScript

כדי להשתמש בסגנון מבוסס-נתונים לגבולות, צריך ליצור מזהה מפה. בשלב הבא, צריך ליצור סגנון מפה חדש, לבחור את שכבות התכונות של הגבולות הנדרשות ולשייך את הסגנון למזהה המפה.

יצירת מזהה מפה

mapID הוא מזהה ייחודי שמייצג מופע יחיד של מפת Google. אפשר ליצור מזהי מפה ולעדכן סגנון שמשויך למזהה מפה בכל שלב במסוף Google Cloud.

צילום מסך של מסוף Google Cloud

יצירת סגנון מפה חדש

כדי ליצור סגנון מפה חדש, פועלים לפי ההוראות במאמר ניהול סגנונות המפה. בסיום, משייכים את הסגנון למזהה המפה החדש שנוצר.

בחירת שכבות תכונות

במסוף Google Cloud אפשר לבחור אילו שכבות תכונות יוצגו. ההגדרה הזו קובעת אילו סוגי גבולות יופיעו במפה (לדוגמה, יישוב, מדינה וכו').

ניהול שכבות תכונות

  1. במסוף Google Cloud, נכנסים לדף Map Styles.

  2. אם מתבקשים, בוחרים פרויקט.

  3. בוחרים סגנון מפה.

  4. לוחצים על התפריט הנפתח שכבות תכונות כדי להוסיף או להסיר שכבות.

  5. לוחצים על שמירה כדי לשמור את השינויים ולהפוך אותם לזמינים במפות.

צילום מסך שבו מוצג התפריט הנפתח.

עדכון קוד האתחול של המפה

בשלב הזה צריך לשייך מזהה מפה לסגנון שבו שכבת תכונות אחת או יותר מופעלת. כדי לוודא שמזהה המפה מוגדר בצורה נכונה במסוף Cloud, בודקים את ההגדרה שלו בקטע ניהול מפות.

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]];

הוספת שכבות תכונות למפה

כדי לקבל הפניה לשכבת תכונות במפה, צריך להפעיל את mapView.featureLayer(of:) כשהמפה מופעלת:

Swift

let layer = mapView.featureLayer(of: .locality)

Objective-C

GMSFeatureLayer *layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];

בדיקת היכולות של המפה

כדי להשתמש בסגנון מבוסס-נתונים לגבולות, צריך יכולות שמופעלות במסוף 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