Cách áp dụng kiểu cho nét vẽ và tô màu đa giác ở ranh giới trong lớp đối tượng:
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 lớp đối tượng.Gọi điện
FeatureLayer.setFeatureStyle()
để áp dụng hàm factory kiểu cho lớp đối tượng.
Bản đồ mẫu sau minh hoạ việc đánh dấu đa giác ranh giới cho một vùng duy nhất trong lớp đối tượng Thành phố.
Tạo một hàm factory có kiểu
Hàm nhà máy kiểu được áp dụng cho mọi đa giác trong đố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 FeatureStyle
chỉ định cách tạo kiểu cho đa giác.
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. Cách tránh ảnh hưởng đến thời gian kết xuất:
Chỉ bật các lớp tính năng bạn cần.
Gọi
FeatureLayer.setFeatureStyle(null)
khi một lớp đối tượng không còn nữa đang sử dụng.
Đặt nét vẽ và tô màu đa giác
Khi tạo kiểu cho một đa giác ranh giới trong hàm nhà máy tạo kiểu, bạn có thể đặt:
Màu và độ mờ của nét chữ của đường viền đa giác ở định dạng màu ARGB, như được xác định bởi
Color
. Giá trị mặc định là trong suốt (0x00000000).Độ rộng nét chữ của đường viền đa giác tính bằng pixel trên màn hình. Giá trị mặc định là 2.
Tô màu và độ mờ của đa giác trong định dạng màu ARGB, như được xác định bởi
Color
. 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 đối tượng dựa trên vị trí của đối tượng đó. Để Ví dụ: bạn có thể muốn áp dụng kiểu cho các quốc gia, lãnh thổ hoặc của Google. Vị trí của đối tượng địa lý đượ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 Google Địa điểm và trên Google Bản đồ. Để tải mã địa điểm, hãy làm như sau:
- Sử dụng API Địa điểm và Mã hoá địa lý để tìm kiếm các khu vực theo tên và nhận ID địa điểm cho các khu vực trong đó các giới hạn đã chỉ định.
- Lấy dữ liệu từ các sự kiện nhấp chuột. Thao tác này sẽ trả về Tính năng tương ứng với khu vực được nhấp vào, khu vực này cung cấp quyền truy cập vào mã địa điểm và danh mục loại đối tượng.
Phạm vi áp dụng thay đổi tuỳ theo khu vực. Xem Phạm vi bao phủ ranh giới của Google để biết thông tin chi tiết.
Tên địa lý có sẵn từ nhiều nguồn, chẳng hạn như Uỷ ban USGS về Tên địa lý, và Hoa Kỳ Tệp Gazetteer.
Sử dụng PlaceFeature để nhận mã địa điểm
PlaceFeature
là một lớp con của lớp Feature
.
Nó đại diện cho một đối tượng địa điểm (đối tượ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_CODE
và SCHOOL_DISTRICT
.
Khi mã địa điểm có sẵn,
SDK bản đồ dành cho Android truyền một bản sao của PlaceFeature
đến nhà máy tạo kiểu
để bạn có thể xác định vị trí của đối tượng địa lý.
Ví dụ về kiểu gốc
Ví dụ này áp dụng hàm factory kiểu cho một đa giác trong Thành phố
lớp đối tượng. Hàm factory kiểu xác định mã địa điểm của đối tượng
bằng cách dùng thực thể PlaceFeature
. Nếu mã địa điểm là dành cho Hana, Hawaii thì
hàm áp dụng kiểu tô màu nền và nét vẽ tuỳ chỉnh cho đa giác:
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 Thành phố lớp đối tượng.
Lấy tham chiếu đến lớp đối tượng Thành phố 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() }Tạo một hàm nhà máy kiểu và áp dụng hàm đó cho Thành phố lớp đối tượng.
Ví dụ sau đây chỉ áp dụng hàm này nếu địa điểm Mã nhận dạng của đối tượng này là dành cho Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Nếu mã địa điểm được chỉ định không dành cho Hana, Hawaii thì kiểu này sẽ không á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 lớp
Để xoá kiểu khỏi một lớp, hãy gọi FeatureLayer.setFeatureStyle(null)
.