หน้านี้จะแสดงวิธีเพิ่มชุดข้อมูลลงในแผนที่และใช้การจัดรูปแบบ
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการต่อ คุณควรมีรหัสแผนที่และรูปแบบแผนที่ รวมถึงรหัสชุดข้อมูล
เชื่อมโยงรหัสชุดข้อมูลกับรูปแบบแผนที่
หากต้องการจัดรูปแบบฟีเจอร์ของชุดข้อมูล ให้ใช้ฟังก์ชันการจัดรูปแบบกับ เลเยอร์ของฟีเจอร์ชุดข้อมูลของแผนที่ ระบบจะสร้างเลเยอร์ของฟีเจอร์ชุดข้อมูลเมื่อคุณ เชื่อมโยงชุดข้อมูลกับรูปแบบแผนที่
วิธีเชื่อมโยงชุดข้อมูลกับรูปแบบแผนที่
- ใน คอนโซล Google Cloud ไปที่หน้า ชุดข้อมูล
- คลิกชื่อชุดข้อมูล หน้ารายละเอียดชุดข้อมูล จะปรากฏขึ้น
- คลิกแท็บแสดงตัวอย่าง
- ในส่วนรูปแบบแผนที่ที่เชื่อมโยง ให้คลิก
เพิ่มรูปแบบแผนที่
- คลิกช่องทำเครื่องหมายสำหรับรูปแบบแผนที่ที่จะเชื่อมโยง แล้วคลิก บันทึก
ใช้รูปแบบกับชุดข้อมูล
วิธีใช้รูปแบบกับชุดข้อมูล
สร้างฟังก์ชัน Style Factory ที่ใช้อินเทอร์เฟซ
FeatureLayer.StyleFactoryฟังก์ชันนี้จะกำหนดตรรกะการจัดรูปแบบสำหรับชุดข้อมูลเรียกใช้
FeatureLayer.setFeatureStyle()เพื่อใช้ฟังก์ชัน Style Factory กับฟีเจอร์แต่ละรายการในชุดข้อมูล
สร้างฟังก์ชัน Style Factory
ระบบจะใช้ฟังก์ชัน Style Factory กับทุกฟีเจอร์ในเลเยอร์ชุดข้อมูลในขณะที่คุณตั้งค่าฟังก์ชันในเลเยอร์ของฟีเจอร์ ฟังก์ชันนี้ต้อง
แสดงผลออบเจ็กต์ FeatureStyle
ที่ระบุวิธีจัดรูปแบบรูปหลายเหลี่ยม
หาก Style Factory แสดงผล null ระบบจะไม่แสดงฟีเจอร์ที่ระบุ ดูข้อมูลเพิ่มเติมได้ที่
หัวข้อนำการจัดรูปแบบออกจากเลเยอร์
Maps SDK สำหรับ Android จะส่ง
Feature
อินสแตนซ์ไปยังฟังก์ชัน Style Factory อินสแตนซ์ Feature แสดงข้อมูลเมตาของฟีเจอร์ ซึ่งช่วยให้คุณเข้าถึงข้อมูลเมตาในฟังก์ชัน Style Factory ได้
ฟังก์ชัน Style Factory ควรแสดงผลลัพธ์ที่สอดคล้องกันเสมอเมื่อนำไปใช้ เช่น หากคุณต้องการกำหนดสีแบบสุ่มให้กับชุดฟีเจอร์ คุณไม่ควรใช้ฟังก์ชันการจัดรูปแบบฟีเจอร์ในการกำหนดสีแบบสุ่ม เนื่องจากอาจทำให้เกิดผลลัพธ์ที่ไม่ต้องการ
เนื่องจากฟังก์ชันนี้ทำงานกับทุกฟีเจอร์ในเลเยอร์ การเพิ่มประสิทธิภาพจึงมีความสำคัญ หากต้องการหลีกเลี่ยงไม่ให้ส่งผลต่อเวลาในการแสดงผล ให้เรียกใช้ FeatureLayer.setFeatureStyle(null) เมื่อไม่ได้ใช้เลเยอร์ของฟีเจอร์อีกต่อไป
นอกจากนี้ คุณยังเรียกใช้ FeatureLayer.getDatasetId() เพื่อรับรหัสของชุดข้อมูลได้ด้วย
กำหนดรัศมีเส้นขอบ สีเติม และจุด
เมื่อจัดรูปแบบฟีเจอร์ในฟังก์ชัน Style Factory คุณจะกำหนดสิ่งต่อไปนี้ได้
สีและความทึบแสงของเส้นขอบ ตามที่กำหนดโดย
Colorคลาส ค่าเริ่มต้นคือโปร่งใส (Color.TRANSPARENT)ความกว้างของเส้นขอบ เป็นพิกเซลบนหน้าจอ ค่าเริ่มต้นคือ 2
สีและความทึบแสงของสีเติม ตามที่กำหนดโดย
Colorคลาส ค่าเริ่มต้นคือโปร่งใส (Color.TRANSPARENT)รัศมีจุด ของฟีเจอร์จุดระหว่าง 0 ถึง 128 พิกเซล
ใช้กฎการจัดรูปแบบอย่างง่าย
วิธีที่ง่ายที่สุดในการจัดรูปแบบฟีเจอร์คือการกำหนด FeatureLayer.StyleFactory ซึ่งจะสร้างออบเจ็กต์ FeatureStyle ที่เหมือนกันเสมอ ไม่ว่าฟีเจอร์จะเป็นแบบใดก็ตาม ใช้ตัวเลือกการจัดรูปแบบฟีเจอร์กับเลเยอร์ของฟีเจอร์ชุดข้อมูลโดยตรง หรือใช้ร่วมกับ FeatureStyleFunction
ใช้กฎการจัดรูปแบบแบบประกาศ
คุณสามารถกำหนดกฎการจัดรูปแบบแบบประกาศตามแอตทริบิวต์ฟีเจอร์ และใช้กฎดังกล่าวกับชุดข้อมูลทั้งหมด คุณสามารถแสดงผล null จากฟังก์ชันการจัดรูปแบบฟีเจอร์ได้ เช่น หากต้องการให้ฟีเจอร์บางส่วนยังคงมองไม่เห็น
ตัวอย่างเช่น ใช้เมธอด DatasetFeature.getDatasetAttributes() เพื่อแสดงผล
Map<String,String> ของแอตทริบิวต์ชุดข้อมูลสำหรับฟีเจอร์ จากนั้นคุณสามารถปรับแต่งการจัดรูปแบบฟีเจอร์ตามแอตทริบิวต์ของฟีเจอร์ได้
ตัวอย่างนี้กำหนดค่าแอตทริบิวต์ "highlightColor" ของฟีเจอร์แต่ละรายการในชุดข้อมูลเพื่อควบคุมการจัดรูปแบบ
Kotlin
// Get the dataset feature, so we can work with all of its attributes. val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }
Java
// Get the dataset feature, so we can work with all of its attributes. DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }
ใช้รูปแบบกับเลเยอร์ของฟีเจอร์ชุดข้อมูล
ตัวอย่างนี้ใช้ฟังก์ชัน Style Factory กับรูปหลายเหลี่ยมในเลเยอร์ของฟีเจอร์ชุดข้อมูล ฟังก์ชัน Style Factory จะใช้สีเติมและรูปแบบเส้นขอบที่กำหนดเองกับรูปหลายเหลี่ยม
หากยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนใน หัวข้อเริ่มต้นใช้งาน เพื่อสร้างรหัสแผนที่และรูปแบบแผนที่ใหม่ อย่าลืมเปิดใช้เลเยอร์ของฟีเจอร์ชุดข้อมูล
รับข้อมูลอ้างอิงไปยังเลเยอร์ของฟีเจอร์ชุดข้อมูลเมื่อแผนที่เริ่มต้น
Kotlin
private var datasetLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
// Apply style factory function to DATASET layer. styleDatasetsLayer() }Java
private FeatureLayer datasetLayer;
@Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
// Apply style factory function to DATASET layer. styleDatasetsLayer(); }สร้างฟังก์ชัน Style Factory และใช้ฟังก์ชันดังกล่าวกับเลเยอร์ของฟีเจอร์ชุดข้อมูล
ตัวอย่างต่อไปนี้ใช้สีเติมและเส้นขอบเดียวกันกับฟีเจอร์ทั้งหมดในชุดข้อมูล
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
นำการจัดรูปแบบออกจากเลเยอร์
หากต้องการนำการจัดรูปแบบออกจากเลเยอร์ ให้เรียกใช้ FeatureLayer.setFeatureStyle(null)
นอกจากนี้ คุณยังแสดงผล null จาก Style Factory ได้ เช่น หากต้องการให้ฟีเจอร์บางส่วนยังคงมองไม่เห็น