Thêm bản đồ đã tạo kiểu

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

Trang này là hướng dẫn nhanh về cách tạo kiểu cho bản đồ, sử dụng chế độ ban đêm làm ví dụ.

Tổng quan

Với các lựa chọn kiểu, bạn có thể tuỳ chỉnh cách trình bày các kiểu bản đồ tiêu chuẩn của Google, thay đổi cách hiển thị trực quan các đối tượng như đường xá, công viên, doanh nghiệp và các điểm tham quan khác. Điều này có nghĩa là bạn có thể nhấn mạnh một số thành phần cụ thể của bản đồ hoặc làm cho bản đồ bổ sung cho kiểu của ứng dụng.

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

Áp dụng kiểu cho bản đồ

Để áp dụng các kiểu bản đồ tuỳ chỉnh cho bản đồ, hãy gọi GMSMapStyle(...) để tạo thực thể GMSMapStyle, truyền URL cho tệp JSON cục bộ hoặc chuỗi JSON chứa các định nghĩa kiểu. Chỉ định 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 cho thấy cách gọi GMSMapStyle(...) và truyền URL cho tệp cục bộ:

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ủa bạn có tên là style.json và dán khai báo kiểu JSON sau đây để tạo kiểu ở chế độ ban đêm:

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

Các ví dụ sau đây cho thấy cách gọi GMSMapStyle(...) và truyền 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
      

Để xác định các lựa chọn kiểu, hãy 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 đồ phong cách riêng sử dụng hai khái niệm để áp dụng màu sắc và các thay đổi về kiểu khác cho bản đồ:

  • Bộ chọn chỉ định các thành phần địa lý mà bạn có thể tạo kiểu trên bản đồ. Các thành phần này bao gồm đường xá, công viên, vùng nước và nhiều thành phần khác, cũng như nhãn của chúng. Bộ chọn bao gồm đối tượngthành phần, được chỉ định là featureTypeelementType thuộc tính.
  • Trình tạo kiểu là các thuộc tính về màu sắc và khả năng hiển thị mà bạn có thể áp dụng cho các thành phần trên bản đồ. Các thuộc tính này xác định màu hiển thị thông qua sự kết hợp giữa giá trị màu sắc, màu và độ sáng và 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 lựa chọn tạo 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 tạo kiểu cho Nền tảng Maps để tạo đối tượng tạo kiểu JSON một cách nhanh chóng. SDK bản đồ dành cho iOS hỗ trợ các khai báo kiểu giống như Maps JavaScript API.

Mã mẫu đầy đủ

Kho lưu trữ ApiDemos trên GitHub bao gồm các mẫu minh hoạ cách sử dụng tính năng tạo kiểu.

Bước tiếp theo

Xem cách ẩn các đối tượng trên bản đồ bằng tính năng tạo kiểu.