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

הפלטפורמה: Android iOS JavaScript

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

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

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

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

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

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

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

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

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

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

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

  2. ‫Call 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; }

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

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

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

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

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