如要為地圖項目圖層中的界線多邊形套用筆劃和填滿樣式,請按照下列步驟操作:
- 建立實作 - FeatureLayer.StyleFactory介面的樣式工廠函式。這個函式會定義地圖項目圖層的樣式邏輯。
- 呼叫 - FeatureLayer.setFeatureStyle(),將樣式工廠函式套用至地圖項目圖層。
以下地圖範例說明如何使用界線多邊形,突顯縣市地圖項目圖層中的單一區域。
 
 
建立樣式工廠函式
在您於地圖項目圖層上設定函式時,樣式工廠函式會套用至受影響地圖項目圖層中的每個多邊形。這個函式必須傳回 FeatureStyle 物件,指定多邊形的樣式。
Maps SDK for Android 會將 Feature 
例項傳遞至樣式工廠函式。Feature 例項代表地圖項目的中繼資料,可讓您存取樣式工廠函式中的中繼資料。
套用樣式工廠函式時,該函式應該會永遠傳回一致的結果。舉例來說,如果您想隨機為一組地圖項目上色,隨機的部分就不應套用地圖項目樣式函式,因為這會導致意外結果。
因為這個函式會針對圖層中每個地圖項目執行,所以最佳化非常重要。如要避免影響算繪時間,請執行下列操作:
- 僅啟用您需要的圖徵圖層。 
- 如果不再使用特徵圖層,請呼叫 - FeatureLayer.setFeatureStyle(null)。
設定多邊形筆觸和填滿
在樣式工廠函式中設定界線多邊形樣式時,您可以設定:
- ARGB 色彩格式的多邊形框線筆劃顏色和不透明度,由 - Color類別定義。預設值為透明 (0x00000000)。
- 多邊形邊框的筆觸寬度 (以螢幕像素為單位)。預設值為 2。 
- ARGB 顏色格式的多邊形填滿顏色和不透明度,如 - Color類別所定義。預設值為透明 (0x00000000)。
查詢地點 ID 來指定地圖項目
許多應用程式會根據地圖項目的位置套用樣式。舉例來說,您可能想為不同國家/地區、領土或區域套用樣式。特徵位置以地點 ID 表示。
地點 ID 可以用來辨識 Google 地點介面集資料庫和 Google 地圖中的特定地點。如何取得地點 ID:
- 使用 Places API 和 Geocoding API 搜尋區域名稱,然後找出指定範圍內區域的地點 ID。
- 從點擊事件取得資料。即可傳回與點擊區域相對應的地圖項目,並提供地點 ID 和地圖項目類型類別的存取權。
涵蓋範圍會因區域而異。詳情請參閱「Google 邊界涵蓋範圍」一文。
提供地理名稱的來源很多,例如 USGS 地理名稱委員會和美國 Gazetteer 檔案。
使用 PlaceFeature 取得地點 ID
PlaceFeature 類別是 Feature 類別的子類別。代表地點特徵 (具有地點 ID 的特徵),包括 ADMINISTRATIVE_AREA_LEVEL_1、ADMINISTRATIVE_AREA_LEVEL_2、COUNTRY、LOCALITY、POSTAL_CODE 和 SCHOOL_DISTRICT 類型的特徵。
如果地點 ID 可用,Android 適用的 Maps SDK 會將 PlaceFeature 的例項傳遞至樣式工廠函式,方便您判斷特徵的位置。
樣式工廠範例
這個範例會將樣式工廠函式套用至縣市地圖項目圖層中的多邊形。樣式工廠函式會使用 PlaceFeature 執行個體,判斷地圖項目的地點 ID。如果地點 ID 是夏威夷哈納,函式會將自訂填滿和筆劃樣式套用至多邊形:
- 如果尚未建立新的地圖 ID 和地圖樣式,請按照「開始使用」一文中的步驟進行。請務必啟用縣市地圖項目圖層。 
- 在地圖初始化時,取得縣市地圖項目圖層的參照。 - 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() }
- 建立樣式工廠函式,並套用至 Locality 地圖項目圖層。 - 下例只會在特徵的地點 ID 為夏威夷哈納 (「ChIJ0zQtYiWsVHkRk8lRoB1RNPo」) 時套用函式。如果指定的地點 ID 不是夏威夷哈納,系統就不會套用樣式。 - 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) }
移除圖層中的樣式
如要移除圖層中的樣式,請呼叫 FeatureLayer.setFeatureStyle(null)。