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