开始使用

请选择平台: Android iOS JavaScript

若要为边界使用数据驱动型样式,您必须创建地图 ID。接下来, 必须创建新的地图样式,选择所需的边界地图项图层, 将样式与您的地图 ID 相关联。

创建地图 ID

mapID 是唯一标识符,用来表示 Google 地图的单个实例。您可以创建地图 ID 和更新样式 与地图 ID 相关联。

Google Cloud 的屏幕截图
控制台

创建新的地图样式

要创建新的地图样式,请按照管理地图 要创建的样式 样式。完成后,将样式与新创建的地图 ID 相关联。

选择地图项图层

在 Google Cloud 控制台中,您可以选择要显示的地图项图层。这个 可确定在地图上显示的边界类型(例如市行政区、 状态等等)。

管理地图项图层

  1. 在 Google Cloud 控制台中,前往“地图样式” 页面

  2. 根据系统提示选择一个项目。

  3. 选择地图样式。

  4. 点击地图项图层下拉菜单,添加或移除图层。

  5. 点击保存,从而保存您所做的更改并使其可在地图中使用。

显示
下拉菜单中。

更新地图初始化代码

此步骤要求地图 ID 与具有一个或多个地图项的样式相关联 图层已启用。若要验证您的地图 ID 是否已在以下位置正确设置: 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 控制台,并且与地图 ID 相关联。由于地图 ID 受 更改,您可以在 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