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