หน้านี้แสดงวิธีเพิ่มชุดข้อมูลลงในแผนที่และใช้การจัดรูปแบบ
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการต่อ คุณควรมีรหัสแผนที่และสไตล์แผนที่ รวมถึงรหัสชุดข้อมูล
เชื่อมโยงรหัสชุดข้อมูลกับรูปแบบแผนที่
ในการจัดรูปแบบคุณลักษณะของชุดข้อมูล ให้ใช้ฟังก์ชันรูปแบบกับ เลเยอร์ฟีเจอร์ชุดข้อมูลของแผนที่ ระบบจะสร้างเลเยอร์ฟีเจอร์ชุดข้อมูลเมื่อคุณเชื่อมโยงชุดข้อมูลกับรูปแบบแผนที่
วิธีเชื่อมโยงชุดข้อมูลกับรูปแบบแผนที่
- ในคอนโซล Google Cloud ให้ไปที่หน้าชุดข้อมูล
- คลิกชื่อชุดข้อมูล หน้ารายละเอียดชุดข้อมูลจะปรากฏขึ้น
- คลิกแท็บแสดงตัวอย่าง
- ในส่วนรูปแบบแผนที่ที่เกี่ยวข้อง ให้คลิก
เพิ่มรูปแบบแผนที่
- คลิกช่องทําเครื่องหมายสําหรับรูปแบบแผนที่ที่ต้องการเชื่อมโยง แล้วคลิก บันทึก
นำรูปแบบไปใช้กับชุดข้อมูล
วิธีใช้รูปแบบกับชุดข้อมูล
สร้างฟังก์ชันสไตล์แฟกทอรีที่ใช้อินเทอร์เฟซ
FeatureLayer.StyleFactory
ฟังก์ชันนี้จะกำหนดตรรกะการจัดรูปแบบสำหรับชุดข้อมูลโทร
FeatureLayer.setFeatureStyle()
เพื่อใช้ฟังก์ชันโรงงานรูปแบบกับแต่ละคุณลักษณะในชุดข้อมูล
สร้างฟังก์ชันเริ่มต้นสไตล์
ระบบจะใช้ฟังก์ชัน Style Factory กับองค์ประกอบทุกรายการในเลเยอร์ชุดข้อมูลเมื่อคุณตั้งค่าฟังก์ชันในเลเยอร์องค์ประกอบ ฟังก์ชันนี้ต้อง
ส่งคืน FeatureStyle
ที่ระบุวิธีจัดรูปแบบรูปหลายเหลี่ยม
หากโรงงานสไตล์แสดงผลเป็น null
ระบบจะไม่แสดงผลฟีเจอร์ที่ระบุ ดูข้อมูลเพิ่มเติมได้ที่นำการจัดสไตล์ออกจากเลเยอร์
Maps SDK สำหรับ Android ผ่านการรับรอง
Feature
เป็นฟังก์ชันโรงงานรูปแบบ อินสแตนซ์ Feature
จะแสดงข้อมูลเมตาของฟีเจอร์ ซึ่งจะช่วยให้คุณเข้าถึงข้อมูลเมตาในฟังก์ชัน Style Factory ได้
ฟังก์ชัน Style Factory ควรแสดงผลลัพธ์ที่สอดคล้องกันเสมอเมื่อนำมาใช้ ตัวอย่างเช่น หากคุณต้องการสุ่มสีชุดคุณลักษณะ ส่วนแบบสุ่มไม่ควรอยู่ในฟังก์ชันสไตล์ฟีเจอร์ ทำให้เกิดผลลัพธ์ที่ไม่ต้องการ
เนื่องจากฟังก์ชันนี้จะทำงานกับองค์ประกอบทุกรายการในเลเยอร์ การเพิ่มประสิทธิภาพจึงมีความสำคัญ เพื่อหลีกเลี่ยงการส่งผลต่อเวลาการแสดงผล ให้เรียกใช้ FeatureLayer.setFeatureStyle(null)
เมื่อไม่มีการใช้เลเยอร์ฟีเจอร์แล้ว
นอกจากนี้ คุณยังเรียกใช้ FeatureLayer.getDatasetId()
เพื่อรับรหัสของชุดข้อมูลได้ด้วย
ตั้งค่าเส้นโครงร่าง สีเติม และรัศมีสำหรับจุด
เมื่อจัดรูปแบบฟีเจอร์ในฟังก์ชันเริ่มต้นของรูปแบบ คุณสามารถตั้งค่าฟังก์ชันต่อไปนี้
สีเส้นโครงร่างและความทึบแสงของเส้นขอบตามที่คลาส
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 ใช้รูปแบบการเติมและเส้นที่กำหนดเองกับรูปหลายเหลี่ยม
หากคุณยังไม่ได้ดำเนินการ ให้ทำตามขั้นตอนใน เริ่มต้นใช้งาน เพื่อสร้างรหัสแผนที่และรูปแบบแผนที่ใหม่ อย่าลืมเปิดใช้เลเยอร์องค์ประกอบชุดข้อมูล
รับการอ้างอิงไปยังเลเยอร์ฟีเจอร์ชุดข้อมูลเมื่อแผนที่เริ่มต้น
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(); }สร้างฟังก์ชันเริ่มต้นสไตล์แล้วใช้กับชุดข้อมูล ของฟีเจอร์
ตัวอย่างต่อไปนี้ใช้การเติมสีและเส้นโครงร่างเดียวกันกับฟีเจอร์ทั้งหมด ในชุดข้อมูล
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
จากโรงงานสไตล์ได้ เช่น หากต้องการให้ฟีเจอร์ชุดย่อยยังคงมองไม่เห็น