แผนที่โคลอเพลทเป็นแผนที่ธีมประเภทหนึ่งที่พื้นที่บริหารมีการระบายสีหรือแรเงาตามค่าข้อมูล คุณสามารถใช้ฟังก์ชัน Style Factory เพื่อจัดสไตล์แผนที่ตามข้อมูลที่แต่ละเขตบริหารเชื่อมโยงกับช่วงของค่าตัวเลข แผนที่ตัวอย่างต่อไปนี้แสดงแผนที่โฮโรเพลทสำหรับรัฐต่างๆ ของสหรัฐอเมริกา
ในตัวอย่างนี้ ข้อมูลประกอบด้วยรหัสสถานที่ของรัฐ ฟังก์ชัน style factory จะกำหนดสีให้กับแต่ละสถานะตามค่าแฮชของรหัสสถานที่สำหรับสถานะนั้นๆ
หากยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนในหัวข้อเริ่มต้นใช้งานเพื่อสร้างรหัสแผนที่และรูปแบบแผนที่ใหม่ อย่าลืมเปิดใช้เลเยอร์ฟีเจอร์พื้นที่บริหารระดับ 1
รับข้อมูลอ้างอิงเลเยอร์องค์ประกอบระดับ 1 ของเขตบริหารเมื่อแผนที่เริ่มต้น สำหรับสหรัฐอเมริกา ระดับการปกครองเหล่านี้จะสอดคล้องกับรัฐแต่ละรัฐ
Java
private FeatureLayer areaLevel1Layer;
@Override public void onMapReady(GoogleMap map) { areaLevel1Layer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.ADMINISTRATIVE_AREA_LEVEL_1) .build());
// Apply style factory function to ADMINISTRATIVE_AREA_LEVEL_1 layer. styleAreaLevel1Layer(); }Kotlin
private var areaLevel1Layer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the ADMINISTRATIVE_AREA_LEVEL_1 feature layer. areaLevel1Layer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.ADMINISTRATIVE_AREA_LEVEL_1) .build())
// Apply style factory function to ADMINISTRATIVE_AREA_LEVEL_1 layer. styleAreaLevel1Layer() }สร้างฟังก์ชันสไตล์แฟกทอรีและนำไปใช้กับเลเยอร์ฟีเจอร์ระดับ 1 ของเขตบริหาร ตัวอย่างต่อไปนี้ใช้ฟังก์ชันกับรูปหลายเหลี่ยมที่แสดงรัฐต่างๆ ของสหรัฐอเมริกา
Java
private void styleAreaLevel1Layer() { FeatureLayer.StyleFactory styleFactory = (Feature feature) -> { if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Return a hueColor in the range [-299,299]. If the value is // negative, add 300 to make the value positive. int hueColor = placeFeature.getPlaceId().hashCode() % 300; if (hueColor < 0) { hueColor += 300; }
return new FeatureStyle.Builder() // Set the fill color for the state based on the hashed hue color. .fillColor(Color.HSVToColor(150, new float[] {hueColor, 1, 1})) .build(); } return null; };
// Apply the style factory function to the feature layer. areaLevel1Layer.setFeatureStyle(styleFactory); }Kotlin
private fun styleAreaLevel1Layer() { val styleFactory = FeatureLayer.StyleFactory { feature: Feature -> if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Return a hueColor in the range [-299,299]. If the value is // negative, add 300 to make the value positive. var hueColor: Int = placeFeature.getPlaceId().hashCode() % 300 if (hueColor < 0) { hueColor += 300 } return@StyleFactory FeatureStyle.Builder() // Set the fill color for the state based on the hashed hue color. .fillColor(Color.HSVToColor(150, floatArrayOf(hueColor.toFloat(), 1f, 1f))) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. areaLevel1Layer?.setFeatureStyle(styleFactory) }