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

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

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

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

  2. เรียกใช้ FeatureLayer.setFeatureStyle() เพื่อใช้ฟังก์ชันโรงงานสไตล์กับเลเยอร์ของฟีเจอร์

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

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

สร้างฟังก์ชันโรงงานสไตล์

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

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

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

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

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

  • เรียกใช้ FeatureLayer.setFeatureStyle(null) เมื่อไม่ได้ใช้เลเยอร์ของฟีเจอร์แล้ว

กำหนดเส้นขอบและการเติมสีของรูปหลายเหลี่ยม

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

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

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

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

ค้นหารหัสสถานที่เพื่อกำหนดเป้าหมายฟีเจอร์

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

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

ความครอบคลุมจะแตกต่างกันไปตามภูมิภาค ดูรายละเอียดได้ที่ความครอบคลุมของขอบเขต Google

ชื่อทางภูมิศาสตร์มีให้บริการจากหลายแหล่ง เช่น USGS Board on Geographic Names และ U.S. Gazetteer Files

ใช้ PlaceFeature เพื่อรับรหัสสถานที่

คลาส PlaceFeature เป็นคลาสย่อยของคลาส Feature ซึ่งแสดงถึงฟีเจอร์สถานที่ (ฟีเจอร์ที่มีรหัสสถานที่) ซึ่งรวมถึงฟีเจอร์ประเภท ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE และ SCHOOL_DISTRICT

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

ตัวอย่างโรงงานสไตล์

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

  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. สร้างฟังก์ชันโรงงานสไตล์และใช้กับเลเยอร์ของฟีเจอร์ท้องถิ่น

    ตัวอย่างต่อไปนี้จะใช้ฟังก์ชันก็ต่อเมื่อรหัสสถานที่ของฟีเจอร์เป็นของฮานา ฮาวาย ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") เท่านั้น หากรหัสสถานที่ที่ระบุไม่ใช่ของฮานา ฮาวาย ระบบจะไม่ใช้สไตล์ดังกล่าว

    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)