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