Để sử dụng định kiểu theo hướng dữ liệu cho các ranh giới, bạn phải tạo ID bản đồ. Tiếp theo, bạn phải tạo một kiểu bản đồ mới, chọn các lớp đối tượng ranh giới cần thiết và liên kết kiểu đó với mã nhận dạng bản đồ.
Tạo mã bản đồ
mapID là giá trị nhận dạng duy nhất đại diện cho một thực thể duy nhất của Google Maps. Bạn có thể tạo mã bản đồ và cập nhật kiểu liên kết với mã nhận dạng bản đồ bất cứ lúc nào trong Google Cloud Console.
Tạo kiểu bản đồ mới
Để tạo kiểu bản đồ mới, hãy làm theo hướng dẫn trong bài viết Quản lý kiểu bản đồ để tạo kiểu. Sau khi hoàn thành, hãy liên kết kiểu với mã bản đồ mới tạo.
Chọn lớp đối tượng
Trong Google Cloud Console, bạn có thể chọn lớp đối tượng để hiển thị. Điều này xác định những loại ranh giới xuất hiện trên bản đồ (ví dụ: địa phương, tiểu bang, v.v.).
Quản lý lớp đối tượng
Trong Google Cloud Console, hãy chuyển đến trang Kiểu bản đồ
Chọn một dự án nếu được nhắc.
Chọn kiểu bản đồ.
Nhấp vào menu thả xuống Lớp đối tượng để thêm hoặc xóa lớp.
Nhấp vào Lưu để lưu các thay đổi và làm cho chúng khả dụng cho bản đồ của bạn.
Cập nhật mã khởi chạy bản đồ
Bước này yêu cầu liên kết mã bản đồ với một kiểu đã bật một hoặc nhiều lớp đối tượng. Để xác minh rằng mã bản đồ của bạn đã được thiết lập chính xác trong Cloud Console, hãy xem lại cách định cấu hình mã này trong phần Quản lý bản đồ.
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]];
Thêm lớp đối tượng vào bản đồ
Để lấy thông tin tham chiếu đến một lớp đối tượng trên bản đồ, hãy gọi
mapView.featureLayer(of:)
khi bản đồ khởi chạy:
Swift
let layer = mapView.featureLayer(of: .locality)
Objective-C
GMSFeatureLayer*layer = [mapView featureLayerOfFeatureType:GMSFeatureTypeLocality];
Kiểm tra các chức năng của bản đồ
Việc định kiểu dựa trên dữ liệu cho các ranh giới yêu cầu bạn phải bật các tính năng được bật trong Google Cloud Console và được liên kết với mã bản đồ. Vì mã nhận dạng bản đồ có thể thay đổi, nên bạn có thể gọi mapView.mapCapabilities
trên GMSMapView
để xác minh xem một chức năng nhất định (ví dụ: định kiểu dựa trên dữ liệu) có sẵn hay không trước khi gọi.
Bạn cũng có thể phát hiện các thay đổi về khả năng của bản đồ bằng cách đăng ký GMSViewDelegate
. Ví dụ này cho biết cách sử dụng giao thức này để kiểm tra các yêu cầu về định kiểu dựa trên dữ liệu.
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