הוספת מערך נתונים למפה וסגנון של מערך נתונים

בחירת פלטפורמה: Android iOS JavaScript

בדף הזה מוסבר איך להוסיף מערך נתונים למפה ולהחיל עליו עיצוב.

צילום מסך שבו מוצגים נתוני פוליגונים בסגנון מסוים.

דרישות מוקדמות

לפני שממשיכים, צריך להכין מזהה מפה, סגנון מפה ומזהה של מערך נתונים.

שיוך מזהה מערך נתונים לסגנון מפה

כדי להחיל סגנון על התכונות של מערך נתונים, מחילים פונקציית סגנון על שכבת התכונות של מערך הנתונים במפה. שכבת התכונות של קבוצת הנתונים נוצרת כאשר משייכים קבוצת נתונים לסגנון מפה.

כדי לשייך את מערך הנתונים לסגנון המפה:

  1. במסוף Google Cloud, עוברים לדף Datasets.
  2. לוחצים על השם של מערך הנתונים. יופיע הדף Dataset details.
  3. לוחצים על הכרטיסייה Preview (תצוגה מקדימה).
  4. בקטע סגנונות מפה משויכים, לוחצים על הוספת סגנון מפה.
    צילום מסך של הלחצן 'הוספת סגנון מפה'.
  5. מסמנים את התיבות של סגנונות המפה שרוצים לשייך ולוחצים על שמירה.

החלת סגנונות על מערך הנתונים

כדי להחיל סגנונות על מערך נתונים:

  1. יוצרים פונקציית מפעל של סגנון שמטמיעה את הממשק FeatureLayer.StyleFactory. הפונקציה הזו מגדירה את הלוגיקה של סגנון הפורמט של מערך נתונים.

  2. קוראים לפונקציה FeatureLayer.setFeatureStyle() כדי להחיל את פונקציית מפעל הסגנונות על כל מאפיין במערך הנתונים.

יצירת פונקציית ייצור של סגנון

פונקציית מפעל הסגנונות חלה על כל התכונות בשכבת מערך הנתונים בזמן שמגדירים את הפונקציה בשכבת התכונות. הפונקציה הזו חייבת להחזיר אובייקט FeatureStyle שמציין איך לעצב את הפוליגון.

אם מפעל הסגנונות מחזיר את הערך null, התכונה הנתונה לא תעבור עיבוד. מידע נוסף זמין במאמר הסרת סגנון משכבה.

ה-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; }

החלת סגנון על שכבת התכונות של מערך הנתונים

בדוגמה הזו מחילים פונקציית יצירת סגנון על פוליגון בשכבת המאפיינים של מערך הנתונים. פונקציית מפעל הסגנון מחילה על הפוליגון סגנון מילוי וסגנון קו בהתאמה אישית:

  1. אם עדיין לא עשיתם זאת, עליכם לפעול לפי השלבים המפורטים במאמר תחילת העבודה כדי ליצור מזהה מפה וסגנון מפה חדשים. חשוב להפעיל את שכבת המאפיינים מערכי נתונים.

  2. קבלת הפניה לשכבת התכונות Datasets כשהמפה מופעלת.

    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(); }

  3. יוצרים פונקציית סטילוס ומחילים אותה על שכבת המאפיינים של מערכי הנתונים.

    בדוגמה הבאה נעשה שימוש באותו מילוי ובאותה קווים לכל התכונות במערך הנתונים.

    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, למשל אם רוצים שקבוצת משנה של תכונות תישאר בלתי נראית.