شروع کردن

پلتفرم را انتخاب کنید: Android iOS JavaScript

برای استفاده از استایل مبتنی بر داده برای مرزها، باید یک شناسه نقشه ایجاد کنید. در مرحله بعد، باید یک سبک نقشه جدید ایجاد کنید، لایه‌های ویژگی مرزی مورد نیاز را انتخاب کنید، و سبک را با شناسه نقشه خود مرتبط کنید.

یک شناسه نقشه ایجاد کنید

MapID یک شناسه منحصر به فرد است که یک نمونه از نقشه گوگل را نشان می دهد. می‌توانید شناسه‌های نقشه ایجاد کنید و سبک مرتبط با شناسه نقشه را در هر زمان در Google Cloud Console به‌روزرسانی کنید.

تصویری از Google Cloud کنسول

یک سبک نقشه جدید ایجاد کنید

برای ایجاد یک سبک نقشه جدید، دستورالعمل های موجود در Manage map styles را برای ایجاد سبک دنبال کنید. پس از تکمیل استایل را با شناسه نقشه جدید ایجاد شده مرتبط کنید.

لایه های ویژگی را انتخاب کنید

در Google Cloud Console می توانید انتخاب کنید که کدام لایه ویژگی نمایش داده شود. این تعیین می کند که چه نوع مرزهایی روی نقشه ظاهر می شوند (به عنوان مثال محلات، ایالت ها و غیره).

لایه های ویژگی را مدیریت کنید

  1. در Google Cloud Console، به صفحه Map Styles بروید

  2. در صورت درخواست، پروژه ای را انتخاب کنید.

  3. یک سبک نقشه را انتخاب کنید.

  4. برای افزودن یا حذف لایه‌ها، روی منوی کشویی لایه‌های ویژگی کلیک کنید.

  5. برای ذخیره تغییرات و در دسترس قرار دادن آنها در نقشه های خود، روی ذخیره کلیک کنید.

اسکرین شات که نشان می دهد کشویی

کد اولیه نقشه خود را به روز کنید

این مرحله نیازمند شناسه نقشه است که با یک سبک با یک یا چند لایه ویژگی فعال باشد. برای تأیید اینکه شناسه نقشه شما به درستی در Cloud Console تنظیم شده است، نحوه پیکربندی آن را در مدیریت Maps مرور کنید.

سویفت

// 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))

هدف-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:) را فراخوانی کنید:

سویفت

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

هدف-C

GMSFeatureLayer *layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];

بررسی قابلیت های نقشه

سبک‌سازی مبتنی بر داده برای مرزها به قابلیت‌هایی نیاز دارد که در Google Cloud Console فعال شده و با شناسه نقشه مرتبط است. از آنجایی که شناسه‌های نقشه در معرض تغییر هستند، می‌توانید با mapView.mapCapabilities در GMSMapView تماس بگیرید تا بررسی کنید که آیا یک قابلیت خاص (مثلاً سبک‌سازی مبتنی بر داده‌ها) قبل از تماس وجود دارد یا خیر.

همچنین می‌توانید با عضویت در GMSViewDelegate تغییرات در قابلیت‌های نقشه را شناسایی کنید. این مثال نحوه استفاده از پروتکل را برای بررسی الزامات استایل مبتنی بر داده نشان می دهد.

سویفت

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.
    }
  }
}

هدف-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
،
پلتفرم را انتخاب کنید: Android iOS JavaScript

برای استفاده از استایل مبتنی بر داده برای مرزها، باید یک شناسه نقشه ایجاد کنید. در مرحله بعد، باید یک سبک نقشه جدید ایجاد کنید، لایه‌های ویژگی مرزی مورد نیاز را انتخاب کنید، و سبک را با شناسه نقشه خود مرتبط کنید.

یک شناسه نقشه ایجاد کنید

MapID یک شناسه منحصر به فرد است که یک نمونه از نقشه گوگل را نشان می دهد. می‌توانید شناسه‌های نقشه ایجاد کنید و سبک مرتبط با شناسه نقشه را در هر زمان در Google Cloud Console به‌روزرسانی کنید.

تصویری از Google Cloud کنسول

یک سبک نقشه جدید ایجاد کنید

برای ایجاد یک سبک نقشه جدید، دستورالعمل های موجود در Manage map styles را برای ایجاد سبک دنبال کنید. پس از تکمیل استایل را با شناسه نقشه جدید ایجاد شده مرتبط کنید.

لایه های ویژگی را انتخاب کنید

در Google Cloud Console می توانید انتخاب کنید که کدام لایه ویژگی نمایش داده شود. این تعیین می کند که چه نوع مرزهایی روی نقشه ظاهر می شوند (به عنوان مثال محلات، ایالت ها و غیره).

لایه های ویژگی را مدیریت کنید

  1. در Google Cloud Console، به صفحه Map Styles بروید

  2. در صورت درخواست، پروژه ای را انتخاب کنید.

  3. یک سبک نقشه را انتخاب کنید.

  4. برای افزودن یا حذف لایه‌ها، روی منوی کشویی لایه‌های ویژگی کلیک کنید.

  5. برای ذخیره تغییرات و در دسترس قرار دادن آنها در نقشه های خود، روی ذخیره کلیک کنید.

اسکرین شات که نشان می دهد کشویی

کد اولیه نقشه خود را به روز کنید

این مرحله نیازمند شناسه نقشه است که با یک سبک با یک یا چند لایه ویژگی فعال باشد. برای تأیید اینکه شناسه نقشه شما به درستی در Cloud Console تنظیم شده است، نحوه پیکربندی آن را در مدیریت Maps مرور کنید.

سویفت

// 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))

هدف-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:) را فراخوانی کنید:

سویفت

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

هدف-C

GMSFeatureLayer *layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];

بررسی قابلیت های نقشه

سبک‌سازی مبتنی بر داده برای مرزها به قابلیت‌هایی نیاز دارد که در Google Cloud Console فعال شده و با شناسه نقشه مرتبط است. از آنجایی که شناسه‌های نقشه در معرض تغییر هستند، می‌توانید با mapView.mapCapabilities در GMSMapView تماس بگیرید تا بررسی کنید که آیا یک قابلیت خاص (مثلاً سبک‌سازی مبتنی بر داده‌ها) قبل از تماس وجود دارد یا خیر.

همچنین می‌توانید با عضویت در GMSViewDelegate تغییرات در قابلیت‌های نقشه را شناسایی کنید. این مثال نحوه استفاده از پروتکل را برای بررسی الزامات استایل مبتنی بر داده نشان می دهد.

سویفت

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.
    }
  }
}

هدف-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