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

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

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

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

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

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

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

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

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

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

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

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

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

  2. מפעילים את הפונקציה FeatureLayer.setFeatureStyle() כדי להחיל את פונקציית ה-style factory על כל ישות בקבוצת הנתונים.

יצירת פונקציה של מפעל סגנונות

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

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

‫SDK של מפות ל-Android מעביר מופע של Feature לפונקציה של יצירת הסגנון. המופע של Feature מייצג את המטא-נתונים של התכונה, ומאפשר לכם לגשת למטא-נתונים בפונקציה של מפעל הסגנונות.

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

הפונקציה הזו פועלת על כל תכונה בשכבה, ולכן חשוב לבצע אופטימיזציה. כדי למנוע השפעה על זמני הרינדור, צריך להפעיל את FeatureLayer.setFeatureStyle(null) כששכבה במפה כבר לא בשימוש.

אפשר גם להפעיל את FeatureLayer.getDatasetId() כדי לקבל את המזהה של מערך הנתונים.

הגדרת קו, מילוי ורדיוס נקודה

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

  • צבע הקו והאטימות של הגבול, כפי שהוגדרו על ידי המחלקה Color. ערך ברירת המחדל הוא שקוף (Color.TRANSPARENT).

  • רוחב הקו של הגבול בפיקסלים במסך. ערך ברירת המחדל הוא 2.

  • צבע המילוי והאטימות כפי שהוגדרו על ידי המחלקה Color. ערך ברירת המחדל הוא שקוף (Color.TRANSPARENT).

  • רדיוס הנקודה של מאפיין נקודה בין 0 ל-128 פיקסלים.

שימוש בכללי סגנון פשוטים

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

שימוש בכללי סגנון הצהרתיים

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

לדוגמה, אפשר להשתמש ב-method‏ 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. אם עדיין לא עשיתם זאת, בצעו את השלבים שמפורטים בקטע תחילת העבודה כדי ליצור מזהה מפה וסגנון מפה חדשים. חשוב להפעיל את שכבת התכונות Datasets.

  2. מקבלים הפניה לשכבת התכונות של מערכי הנתונים כשהמפה מאותחלת.

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