จัดรูปแบบรูปหลายเหลี่ยมที่เป็นขอบเขต

เลือกแพลตฟอร์ม Android iOS JavaScript

หากต้องการใช้รูปแบบสำหรับเส้นโครงร่างและการเติมให้กับรูปหลายเหลี่ยมขอบเขตในเลเยอร์ฟีเจอร์ ให้ทำดังนี้

  1. สร้างฟังก์ชันโรงงานสไตล์ที่นำองค์ประกอบ FeatureLayer.StyleFactory ของ Google ฟังก์ชันนี้จะกำหนดตรรกะการจัดรูปแบบสำหรับเลเยอร์ฟีเจอร์

  2. โทร FeatureLayer.setFeatureStyle() เพื่อใช้ฟังก์ชันเริ่มต้นของรูปแบบกับเลเยอร์ของฟีเจอร์

ตัวอย่างต่อไปนี้แผนที่แสดงให้เห็นการไฮไลต์รูปหลายเหลี่ยมขอบเขตสำหรับ ภูมิภาคเดียวในเลเยอร์คุณลักษณะของย่าน

ภาพหน้าจอแสดงรูปหลายเหลี่ยมฮานาฮาวาย

สร้างฟังก์ชันเริ่มต้นสไตล์

ฟังก์ชันโรงงานรูปแบบจะมีผลกับรูปหลายเหลี่ยมทุกรูปในองค์ประกอบที่ได้รับผลกระทบ ตามเวลาที่คุณกำหนดฟังก์ชันในเลเยอร์ของจุดสนใจ ฟังก์ชันนี้ต้อง ส่งคืน FeatureStyle ที่ระบุวิธีจัดรูปแบบรูปหลายเหลี่ยม

Maps SDK สำหรับ Android ผ่านการรับรอง Feature เป็นฟังก์ชันโรงงานรูปแบบ อินสแตนซ์ Feature แสดงฟังก์ชัน ข้อมูลเมตาของฟีเจอร์ ซึ่งให้สิทธิ์คุณเข้าถึงข้อมูลเมตาในโรงงานสไตล์

ฟังก์ชันค่าเริ่มต้นสำหรับรูปแบบควรแสดงผลลัพธ์ที่สอดคล้องกันเสมอเมื่อ ใช้แล้ว ตัวอย่างเช่น หากคุณต้องการสุ่มสีชุดคุณลักษณะ ส่วนแบบสุ่มไม่ควรอยู่ในฟังก์ชันสไตล์ฟีเจอร์ ทำให้เกิดผลลัพธ์ที่ไม่ต้องการ

เนื่องจากฟังก์ชันนี้จะทำงานทับทุกฟีเจอร์ในเลเยอร์ การเพิ่มประสิทธิภาพจึง เป็นอย่างมาก หากต้องการหลีกเลี่ยงไม่ให้ส่งผลต่อเวลาในการแสดงผล ให้ทำดังนี้

  • เปิดใช้เฉพาะเลเยอร์ฟีเจอร์ที่คุณต้องการ

  • เรียก FeatureLayer.setFeatureStyle(null) เมื่อเลเยอร์ฟีเจอร์ไม่อยู่อีกต่อไป ที่ใช้งานอยู่

ตั้งค่าเส้นรูปหลายเหลี่ยมและการเติมสี

เมื่อจัดรูปแบบรูปหลายเหลี่ยมที่เป็นขอบเขตในฟังก์ชันการสร้างรูปแบบจากโรงงาน คุณสามารถกำหนดสิ่งต่างๆ ต่อไปนี้

  • สีเส้นโครงร่างและความทึบแสงของเส้นขอบรูปหลายเหลี่ยมในรูปแบบสี ARGB ตามที่กำหนดโดย Color ค่าเริ่มต้นคือโปร่งใส (0x00000000)

  • ความกว้างของเส้นของเส้นขอบรูปหลายเหลี่ยมในหน่วยพิกเซลของหน้าจอ ค่าเริ่มต้น เท่ากับ 2

  • เติมสีและความทึบแสงของรูปหลายเหลี่ยมในรูปแบบสี ARGB ที่กำหนดโดย Color ค่าเริ่มต้นคือโปร่งใส (0x00000000)

ค้นหารหัสสถานที่ที่จะกำหนดเป้าหมายสถานที่

แอปพลิเคชันจำนวนมากใช้รูปแบบกับองค์ประกอบตามตำแหน่งของตำแหน่ง สำหรับ เช่น คุณอาจต้องการนำการจัดรูปแบบไปใช้กับประเทศ เขตแดน หรือ ภูมิภาค ตำแหน่งขององค์ประกอบจะแสดงด้วย รหัสสถานที่

รหัสสถานที่จะระบุสถานที่ในฐานข้อมูล Google Places และใน Google โดยไม่ซ้ำกัน Maps วิธีรับรหัสสถานที่

การครอบคลุมจะแตกต่างกันไปตามภูมิภาค โปรดดู การครอบคลุมของขอบเขตของ 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 ฟังก์ชันจะใช้รูปแบบการเติมพื้นและเส้นโครงร่างที่กำหนดเองกับรูปหลายเหลี่ยม

  1. หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนใน เริ่มต้นใช้งาน เพื่อสร้างรหัสแผนที่และรูปแบบแผนที่ใหม่ อย่าลืมเปิดใช้ย่าน ของฟีเจอร์

  2. ดูการอ้างอิงเลเยอร์คุณลักษณะของย่านเมื่อแผนที่เริ่มต้น

    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() }

  3. สร้างฟังก์ชันเริ่มต้นสไตล์แล้วใช้กับย่าน ของฟีเจอร์

    ตัวอย่างต่อไปนี้จะใช้ฟังก์ชันนี้เฉพาะในกรณีที่สถานที่ รหัสของฟีเจอร์คือ 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)