Tạo kiểu một đa giác ranh giới

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

Cách áp dụng kiểu cho nét vẽ và màu tô cho đa giác ranh giới trong lớp đối tượng:

  1. Tạo một hàm nhà máy kiểu triển khai giao diện FeatureLayer.StyleFactory. Hàm này xác định logic tạo kiểu cho lớp đối tượng.

  2. Gọi FeatureLayer.setFeatureStyle() để áp dụng hàm nhà máy kiểu cho lớp đối tượng.

Bản đồ ví dụ sau đây minh hoạ việc làm nổi bật đa giác ranh giới cho một khu vực trong lớp đối tượng Địa phương.

Ảnh chụp màn hình cho thấy đa giác Hana Hawaii.

Tạo hàm nhà máy kiểu

Hàm factory kiểu được áp dụng cho mọi đa giác trong lớp đối tượng bị ảnh hưởng 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 đối tượng FeatureStyle chỉ định cách tạo kiểu cho đa giác.

SDK Bản đồ dành cho Android sẽ truyền một thực thể Feature đến hàm nhà máy kiểu. Phiên bản 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 hàm nhà máy kiểu.

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

Vì hàm này chạy trên mọi tính năng trong một lớp, nên việc tối ưu hoá là rất quan trọng. Cách tránh ảnh hưởng đến thời gian kết xuất:

  • Chỉ bật các lớp đối tượng mà bạn cần.

  • Gọi FeatureLayer.setFeatureStyle(null) khi một lớp đối tượng không còn được sử dụng nữa.

Đặt nét vẽ và màu nền của đa giác

Khi tạo kiểu cho đa giác ranh giới trong hàm nhà máy kiểu, bạn có thể đặt:

  • Màu và độ mờ của nét vẽ đường viền đa giác ở định dạng màu ARGB, như được xác định bởi lớp Color. Giá trị mặc định là trong suốt (0x00000000).

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

  • Màu nền và độ mờ của đa giác ở định dạng màu ARGB, do lớp Color xác định. Giá trị mặc định là trong suốt (0x00000000).

Tra cứu mã địa điểm để nhắm đến các đối tượng địa lý

Nhiều ứng dụng áp dụng kiểu cho một tính năng dựa trên vị trí của tính năng đó. Ví dụ: bạn có thể muốn áp dụng kiểu cho nhiều quốc gia, vùng lãnh thổ hoặc khu vực. Vị trí của đối tượng được biểu thị bằng mã địa điểm.

Mã địa điểm giúp xác định riêng một địa điểm trong cơ sở dữ liệu của Google Địa điểm và trên Google Maps. Để tải mã địa điểm, hãy làm như sau:

Phạm vi cung cấp dịch vụ thay đổi tuỳ theo khu vực. Hãy xem bài viết Phạm vi của ranh giới của Google để biết thông tin chi tiết.

Bạn có thể lấy tên địa lý từ nhiều nguồn, chẳng hạn như Uỷ ban về tên địa lý của USGSTệp bản đồ địa lý của Hoa Kỳ.

Sử dụng PlaceFeature để nhận mã địa điểm

Lớp PlaceFeature là một lớp con của lớp Feature. Thuộc tính này đại diện cho một tính năng địa điểm (một tính năng có mã địa điểm) bao gồm các tính năng thuộc loại ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODESCHOOL_DISTRICT.

Khi có mã địa điểm, SDK Maps dành cho Android sẽ truyền một bản sao của PlaceFeature đến hàm factory kiểu để bạn có thể xác định vị trí của đối tượng.

Ví dụ về nhà máy kiểu

Ví dụ này áp dụng hàm nhà máy kiểu cho một đa giác trong lớp đối tượng Địa phương. Hàm nhà máy kiểu xác định mã địa điểm của đối tượng bằng cách sử dụng thực thể PlaceFeature. Nếu mã địa điểm là của Hana, Hawaii, thì hàm này sẽ áp dụng kiểu tô và nét tuỳ chỉnh cho đa giác:

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

  2. Lấy thông tin tham chiếu đến lớp đối tượng Locality (Khu vực địa lý) khi bản đồ khởi chạy.

    Java

    private FeatureLayer localityLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
    // Apply style factory function to LOCALITY layer. styleLocalityLayer(); }

    Kotlin

    private var localityLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
    // Apply style factory function to LOCALITY layer. styleLocalityLayer() }

  3. Tạo một hàm nhà máy kiểu và áp dụng hàm đó cho lớp đối tượng Địa điểm.

    Ví dụ sau chỉ áp dụng hàm này nếu mã địa điểm của đối tượng là Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Nếu mã địa điểm được chỉ định không phải là của Hana, Hawaii, thì kiểu này sẽ không được áp dụng.

    Java

    private void styleLocalityLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
    // Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }

    Kotlin

    private fun styleLocalityLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
    // Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }

Xoá kiểu khỏi một lớp

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