Thêm tập dữ liệu vào tập dữ liệu bản đồ và kiểu

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

Trang này cho bạn biết cách thêm tập dữ liệu vào bản đồ và áp dụng kiểu.

Ảnh chụp màn hình hiển thị dữ liệu đa giác được tạo kiểu.

Điều kiện tiên quyết

Trước khi tiếp tục, bạn cần có một mã bản đồ và kiểu bản đồ, cũng như một mã tập dữ liệu.

Liên kết mã tập dữ liệu với kiểu bản đồ

Để tạo kiểu cho các đối tượng của tập dữ liệu, bạn sẽ áp dụng một hàm tạo kiểu cho lớp đối tượng tập dữ liệu của bản đồ. Lớp đối tượng của tập dữ liệu được tạo khi bạn liên kết tập dữ liệu với kiểu bản đồ.

Để liên kết tập dữ liệu của bạn với kiểu bản đồ:

  1. Trong Google Cloud Console, hãy truy cập vào trang Tập dữ liệu.
  2. Nhấp vào tên của tập dữ liệu. Trang Thông tin chi tiết về tập dữ liệu sẽ xuất hiện.
  3. Nhấp vào thẻ Xem trước.
  4. Trong mục Kiểu bản đồ được liên kết, hãy nhấp vào THÊM KIỂU BẢN ĐỒ.
    Ảnh chụp màn hình nút THÊM KIỂU BẢN ĐỒ.
  5. Nhấp vào(các) hộp đánh dấu cho(các) Kiểu bản đồ cần liên kết và sau đó nhấp vào LƯU.

Áp dụng kiểu cho tập dữ liệu

Cách áp dụng kiểu cho một tập dữ liệu:

  1. Tạo một hàm nhà máy kiểu để triển khai FeatureLayer.StyleFactory . Hàm này xác định logic định kiểu cho một tập dữ liệu.

  2. Gọi điện FeatureLayer.setFeatureStyle() để áp dụng hàm nhà máy kiểu cho mỗi đối tượng trong tập dữ liệu.

Tạo một hàm factory có kiểu

Hàm nhà máy kiểu được áp dụng cho mọi đối tượng trong tập dữ liệu tại thời điểm bạn đặt hàm trên lớp đối tượng. Hàm này phải trả về một FeatureStyle chỉ định cách tạo kiểu cho đa giác.

Nếu nhà máy kiểu trả về null, thì tính năng đã cho sẽ không được kết xuất. Để biết thêm hãy xem Xoá kiểu khỏi lớp.

SDK bản đồ dành cho Android truyền một Feature đối với hàm factory có kiểu. Thực thể Feature đại diện cho siêu dữ liệu của tính năng, cho phép bạn truy cập vào siêu dữ liệu trong style factory .

Hàm factory kiểu phải luôn trả về kết quả nhất quán khi áp dụng. Ví dụ: nếu bạn muốn tô màu ngẫu nhiên một tập hợp các đối tượng, phần ngẫu nhiên không nên diễn ra trong hàm kiểu tính năng, vì điều đó sẽ gây ra kết quả không mong muốn.

Do hàm này chạy trên mọi đối tượng trong một lớp, nên hoạt động tối ưu hoá rất quan trọng. Để tránh ảnh hưởng đến thời gian kết xuất, hãy gọi FeatureLayer.setFeatureStyle(null) khi một lớp đối tượng không còn được sử dụng nữa.

Bạn cũng có thể gọi FeatureLayer.getDatasetId() để lấy mã nhận dạng của tập dữ liệu.

Đặt bán kính nét vẽ, màu nền và bán kính điểm

Khi tạo kiểu cho một đối tượng trong hàm factory kiểu, bạn có thể đặt:

  • Màu và độ mờ nét vẽ của đường viền như được xác định bằng Color . Giá trị mặc định là trong suốt (Color.TRANSPARENT).

  • Độ rộng nét chữ của đường viền tính bằng pixel trên màn hình. Giá trị mặc định là 2.

  • Màu tô và độ mờ như được xác định bởi Color . Giá trị mặc định là trong suốt (Color.TRANSPARENT).

  • Bán kính điểm của một đối tượng điểm trong khoảng từ 0 đến 128 pixel.

Sử dụng quy tắc kiểu đơn giản

Cách đơn giản nhất để tạo kiểu cho các tính năng là xác định FeatureLayer.StyleFactory luôn tạo một đối tượng FeatureStyle giống hệt nhau, bất kể của chúng tôi. Áp dụng trực tiếp các kiểu tính năng cho một lớp đối tượng tập dữ liệu hoặc sử dụng chúng cùng với FeatureStyleFunction.

Sử dụng quy tắc kiểu khai báo

Bạn có thể đặt quy tắc kiểu được khai báo dựa trên thuộc tính tính năng, rồi áp dụng chúng cho toàn bộ tập dữ liệu. Bạn có thể trả lại null trong hàm kiểu tính năng, ví dụ: nếu bạn muốn giữ lại một số tính năng không hiển thị.

Ví dụ: sử dụng phương thức DatasetFeature.getDatasetAttributes() để trả về một Map<String,String> thuộc tính tập dữ liệu cho một đối tượng. Sau đó, bạn có thể tuỳ chỉnh kiểu đối tượng dựa trên các thuộc tính của đối tượng đó.

Ví dụ này xác định giá trị của thuộc tính "highlightColor" của mỗi biến tính năng của tập dữ liệu để kiểm soát kiểu:

Kotlin

// Get the dataset feature, so we can work with all of its attributes.
val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }

Java

// Get the dataset feature, so we can work with all of its attributes.
DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }

Áp dụng kiểu cho lớp đối tượng tập dữ liệu

Ví dụ này áp dụng hàm factory kiểu cho một đa giác trong tập dữ liệu lớp đối tượng. Hàm factory kiểu áp dụng kiểu tô màu nền và nét vẽ tuỳ chỉnh vào đa giác:

  1. Nếu bạn chưa thực hiện, hãy làm theo các bước trong Bắt đầu để tạo mã bản đồ mới và kiểu bản đồ. Hãy nhớ bật Tập dữ liệu lớp đối tượng.

  2. Lấy thông tin tham chiếu đến lớp đối tượng Tập dữ liệu khi bản đồ khởi chạy.

    Kotlin

    private var datasetLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
    // Apply style factory function to DATASET layer. styleDatasetsLayer() }

    Java

    private FeatureLayer datasetLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
    // Apply style factory function to DATASET layer. styleDatasetsLayer(); }

  3. Tạo một hàm factory kiểu và áp dụng cho Tập dữ liệu lớp đối tượng.

    Ví dụ sau đây áp dụng cùng một màu nền và nét vẽ cho tất cả các đối tượng trong tập dữ liệu.

    Kotlin

    private fun styleDatasetsLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
    return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
    // Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

    Java

    private void styleDatasetsLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
    return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2F) .build(); } return null; };
    // Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

Xoá kiểu khỏi lớp

Để xoá kiểu khỏi một lớp, hãy gọi FeatureLayer.setFeatureStyle(null).

Bạn cũng có thể trả lại null từ nhà máy tạo kiểu, ví dụ nếu bạn muốn một tập hợp con tính năng tiếp tục ẩn.