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

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

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

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

  2. เรียกใช้ FeatureLayer.setFeatureStyle() เพื่อใช้ฟังก์ชัน Style Factory กับเลเยอร์ฟีเจอร์

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ชื่อทางภูมิศาสตร์มีให้บริการจากแหล่งที่มาหลายแห่ง เช่น คณะกรรมการชื่อทางภูมิศาสตร์ของ USGS และไฟล์สารานุกรมภูมิศาสตร์ของสหรัฐอเมริกา

ใช้ 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)