หากต้องการใช้รูปแบบสำหรับเส้นโครงร่างและการเติมให้กับรูปหลายเหลี่ยมขอบเขตในเลเยอร์ฟีเจอร์ ให้ทำดังนี้
สร้างฟังก์ชันโรงงานสไตล์ที่นำองค์ประกอบ
FeatureLayer.StyleFactory
ของ Google ฟังก์ชันนี้จะกำหนดตรรกะการจัดรูปแบบสำหรับเลเยอร์ฟีเจอร์โทร
FeatureLayer.setFeatureStyle()
เพื่อใช้ฟังก์ชันเริ่มต้นของรูปแบบกับเลเยอร์ของฟีเจอร์
ตัวอย่างต่อไปนี้แผนที่แสดงให้เห็นการไฮไลต์รูปหลายเหลี่ยมขอบเขตสำหรับ ภูมิภาคเดียวในเลเยอร์คุณลักษณะของย่าน
สร้างฟังก์ชันเริ่มต้นสไตล์
ฟังก์ชันโรงงานรูปแบบจะมีผลกับรูปหลายเหลี่ยมทุกรูปในองค์ประกอบที่ได้รับผลกระทบ
ตามเวลาที่คุณกำหนดฟังก์ชันในเลเยอร์ของจุดสนใจ ฟังก์ชันนี้ต้อง
ส่งคืน FeatureStyle
ที่ระบุวิธีจัดรูปแบบรูปหลายเหลี่ยม
Maps SDK สำหรับ Android ผ่านการรับรอง
Feature
เป็นฟังก์ชันโรงงานรูปแบบ อินสแตนซ์ Feature
แสดงฟังก์ชัน
ข้อมูลเมตาของฟีเจอร์ ซึ่งให้สิทธิ์คุณเข้าถึงข้อมูลเมตาในโรงงานสไตล์
ฟังก์ชันโรงงานรูปแบบควรแสดงผลลัพธ์ที่สอดคล้องกันเสมอเมื่อ ใช้แล้ว ตัวอย่างเช่น หากคุณต้องการสุ่มสีชุดคุณลักษณะ ส่วนแบบสุ่มไม่ควรอยู่ในฟังก์ชันสไตล์ฟีเจอร์ ทำให้เกิดผลลัพธ์ที่ไม่ต้องการ
เนื่องจากฟังก์ชันนี้จะทำงานทับทุกฟีเจอร์ในเลเยอร์ การเพิ่มประสิทธิภาพจึง เป็นอย่างมาก หากต้องการหลีกเลี่ยงไม่ให้ส่งผลต่อเวลาในการแสดงผล ให้ทำดังนี้
เปิดใช้เฉพาะเลเยอร์ฟีเจอร์ที่คุณต้องการ
เรียก
FeatureLayer.setFeatureStyle(null)
เมื่อเลเยอร์ฟีเจอร์ไม่อยู่อีกต่อไป ที่ใช้งานอยู่
ตั้งค่าเส้นรูปหลายเหลี่ยมและการเติมสี
เมื่อจัดรูปแบบรูปหลายเหลี่ยมที่เป็นขอบเขตในฟังก์ชันการสร้างรูปแบบจากโรงงาน คุณสามารถกำหนดสิ่งต่างๆ ต่อไปนี้
สีเส้นโครงร่างและความทึบแสงของเส้นขอบรูปหลายเหลี่ยมในรูปแบบสี ARGB ตามที่กำหนดโดย
Color
ค่าเริ่มต้นคือโปร่งใส (0x00000000)ความกว้างของเส้นของเส้นขอบรูปหลายเหลี่ยมในหน่วยพิกเซลของหน้าจอ ค่าเริ่มต้น เท่ากับ 2
เติมสีและความทึบแสงของรูปหลายเหลี่ยมในรูปแบบสี ARGB ที่กำหนดโดย
Color
ค่าเริ่มต้นคือโปร่งใส (0x00000000)
ค้นหารหัสสถานที่ที่จะกำหนดเป้าหมายสถานที่
แอปพลิเคชันจำนวนมากใช้รูปแบบกับองค์ประกอบตามตำแหน่งของตำแหน่ง สำหรับ เช่น คุณอาจต้องการนำการจัดรูปแบบไปใช้กับประเทศ เขตแดน หรือ ภูมิภาค ตำแหน่งขององค์ประกอบจะแสดงด้วย รหัสสถานที่
รหัสสถานที่จะระบุสถานที่ในฐานข้อมูล Google Places และใน Google โดยไม่ซ้ำกัน Maps วิธีรับรหัสสถานที่
- ใช้ Places API และการระบุพิกัดทางภูมิศาสตร์ เพื่อค้นหาภูมิภาคตามชื่อ และรับรหัสสถานที่สำหรับภูมิภาคภายใน ขอบเขตที่ระบุ
- รับข้อมูลจากกิจกรรมการคลิก จะแสดงผลฟีเจอร์ที่เกี่ยวข้องกับภูมิภาคที่คลิก ซึ่งจะแสดง รหัสสถานที่และหมวดหมู่ประเภทสถานที่
การครอบคลุมจะแตกต่างกันไปตามภูมิภาค โปรดดู การครอบคลุมของขอบเขตของ Google เพื่อดูรายละเอียด
ชื่อทางภูมิศาสตร์มีที่มาจากหลายแหล่ง เช่น คณะกรรมการ USGS ว่าด้วยชื่อทางภูมิศาสตร์ และ สหรัฐอเมริกา Gazetteer Files
ใช้ PlaceFeature เพื่อรับรหัสสถานที่
PlaceFeature
class คือคลาสย่อยของคลาส Feature
ซึ่งแสดงถึงสถานที่ของสถานที่ (สถานที่ที่มีรหัสสถานที่) ซึ่งรวม
ฟีเจอร์ของประเภท ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
COUNTRY
, LOCALITY
, POSTAL_CODE
และ SCHOOL_DISTRICT
เมื่อมีรหัสสถานที่แล้ว พารามิเตอร์
Maps SDK สำหรับ Android ส่งอินสแตนซ์ของ PlaceFeature
ไปยังโรงงานจัดรูปแบบ
เพื่อให้คุณสามารถระบุตำแหน่งขององค์ประกอบได้
ตัวอย่างรูปแบบเริ่มต้น
ตัวอย่างนี้ใช้ฟังก์ชันโรงงานรูปแบบกับรูปหลายเหลี่ยมในย่าน
ของฟีเจอร์ ฟังก์ชันโรงงานรูปแบบจะเป็นตัวกำหนดรหัสสถานที่ของจุดสนใจ
โดยใช้อินสแตนซ์ PlaceFeature
ถ้ารหัสสถานที่คือ Hana, Hawaii
ฟังก์ชันจะใช้รูปแบบการเติมพื้นและเส้นโครงร่างที่กำหนดเองกับรูปหลายเหลี่ยม
หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนใน เริ่มต้นใช้งาน เพื่อสร้างรหัสแผนที่และรูปแบบแผนที่ใหม่ อย่าลืมเปิดใช้ย่าน ของฟีเจอร์
ดูการอ้างอิงเลเยอร์คุณลักษณะของย่านเมื่อแผนที่เริ่มต้น
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() }สร้างฟังก์ชันเริ่มต้นสไตล์แล้วใช้กับย่าน ของฟีเจอร์
ตัวอย่างต่อไปนี้จะใช้ฟังก์ชันนี้เฉพาะในกรณีที่สถานที่ รหัสของฟีเจอร์คือ Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") หากรหัสสถานที่ที่ระบุไม่ใช่สำหรับ Hana, Hawaii รูปแบบจะไม่ใช่ ใช้แล้ว
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)