Ẩn tính năng bản đồ với định kiểu

Chọn nền tảng: Android iOS JavaScript

Ngoài việc thay đổi kiểu của các đối tượng trên bản đồ, bạn cũng có thể ẩn hoàn toàn các đối tượng đó. Ví dụ này cho bạn thấy cách ẩn các địa điểm yêu thích (POI) cho doanh nghiệp và biểu tượng phương tiện công cộng trên bản đồ.

Tính năng định kiểu chỉ hoạt động trên loại bản đồ kGMSTypeNormal.

Áp dụng kiểu cho bản đồ của bạn

Để áp dụng kiểu bản đồ tuỳ chỉnh cho một bản đồ, hãy gọi GMSMapStyle(...) để tạo một thực thể GMSMapStyle, truyền URL cho một tệp JSON cục bộ hoặc một chuỗi JSON chứa các định nghĩa kiểu. Gán thực thể GMSMapStyle cho thuộc tính mapStyle của bản đồ.

Sử dụng tệp JSON

Các ví dụ sau đây minh hoạ việc gọi GMSMapStyle(...) và truyền URL của một tệp cục bộ:

Mã mẫu sau đây giả định dự án của bạn chứa một tệp có tên là style.json:

Swift

import GoogleMaps

class MapStyling: UIViewController {

  // Set the status bar style to complement night-mode.
  override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }

  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0)
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    do {
      // Set the map style by passing the URL of the local file.
      if let styleURL = Bundle.main.url(forResource: "style", withExtension: "json") {
        mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL)
      } else {
        NSLog("Unable to find style.json")
      }
    } catch {
      NSLog("One or more of the map styles failed to load. \(error)")
    }

    self.view = mapView
  }
}
      

Objective-C

#import "MapStyling.h"
@import GoogleMaps;

@interface MapStyling ()

@end

@implementation MapStyling

// Set the status bar style to complement night-mode.
- (UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
}

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.myLocationEnabled = YES;

  NSBundle *mainBundle = [NSBundle mainBundle];
  NSURL *styleUrl = [mainBundle URLForResource:@"style" withExtension:@"json"];
  NSError *error;

  // Set the map style by passing the URL for style.json.
  GMSMapStyle *style = [GMSMapStyle styleWithContentsOfFileURL:styleUrl error:&error];

  if (!style) {
    NSLog(@"The style definition could not be loaded: %@", error);
  }

  mapView.mapStyle = style;
  self.view = mapView;
}

@end
      

Để xác định các lựa chọn kiểu, hãy thêm tệp mới vào dự án có tên là style.json rồi dán nội dung khai báo kiểu JSON sau đây để ẩn các địa điểm yêu thích (POI) và biểu tượng phương tiện công cộng:

Sử dụng tài nguyên chuỗi

Các ví dụ sau đây cho thấy việc gọi GMSMapStyle() và truyền một tài nguyên chuỗi:

Swift

class MapStylingStringResource: UIViewController {

  let MapStyle = "JSON_STYLE_GOES_HERE"

  // Set the status bar style to complement night-mode.
  override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }

  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0)
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    do {
      // Set the map style by passing a valid JSON string.
      mapView.mapStyle = try GMSMapStyle(jsonString: MapStyle)
    } catch {
      NSLog("One or more of the map styles failed to load. \(error)")
    }

    self.view = mapView
  }
}
      

Objective-C

@implementation MapStylingStringResource

// Paste the JSON string to use.
static NSString *const kMapStyle = @"JSON_STYLE_GOES_HERE";

// Set the status bar style to complement night-mode.
- (UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
}

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.myLocationEnabled = YES;

  NSError *error;

  // Set the map style by passing a valid JSON string.
  GMSMapStyle *style = [GMSMapStyle styleWithJSONString:kMapStyle error:&error];

  if (!style) {
    NSLog(@"The style definition could not be loaded: %@", error);
  }

  mapView.mapStyle = style;
  self.view = mapView;
}

@end
      

Nội dung khai báo kiểu sau đây ẩn các địa điểm yêu thích (POI) của doanh nghiệp và biểu tượng phương tiện công cộng. Dán chuỗi kiểu sau đây làm giá trị của biến kMapStyle:

Khai báo kiểu JSON

Bản đồ đã tạo kiểu sử dụng hai khái niệm để áp dụng màu và các thay đổi khác về kiểu cho bản đồ:

  • Trình chọn chỉ định các thành phần địa lý mà bạn có thể định kiểu trên bản đồ. Các địa điểm này bao gồm đường, công viên, vùng nước và các địa điểm khác, cũng như nhãn của các vùng nước đó. Các bộ chọn bao gồm tính năngphần tử, được chỉ định dưới dạng thuộc tính featureTypeelementType.
  • Trình tạo kiểu là các thuộc tính màu và chế độ hiển thị mà bạn có thể áp dụng cho các phần tử bản đồ. Các thuộc tính này xác định màu hiển thị thông qua tổ hợp các giá trị sắc độ, màu sắc và độ sáng/gamma.

Hãy xem tài liệu tham khảo về kiểu để biết nội dung mô tả chi tiết về các tuỳ chọn định kiểu JSON.

Trình hướng dẫn tạo kiểu cho Nền tảng Maps

Sử dụng Trình hướng dẫn định kiểu trên nền tảng Maps để nhanh chóng tạo đối tượng định kiểu JSON. SDK Maps dành cho iOS hỗ trợ các nội dung khai báo kiểu giống như API JavaScript của Maps.

Mã mẫu đầy đủ

Kho lưu trữ Apidemos trên GitHub bao gồm các mẫu minh hoạ việc sử dụng định kiểu.