בדף הזה מוסבר איך להוסיף מערך נתונים למפה ולהחיל סגנון.
דרישות מוקדמות
לפני שממשיכים, צריך לוודא שיש לכם מזהה מפה, סגנון מפה ומזהה מערך נתונים.
שיוך של מזהה קבוצת נתונים לסגנון מפה
כדי לעצב את התכונות של מערך נתונים, צריך להחיל פונקציית סגנון על שכבת התכונות של מערך הנתונים במפה. שכבה במפה של מערך הנתונים נוצרת כשמשייכים מערך נתונים לסגנון המפה.
כדי לשייך את קבוצת הנתונים לסגנון המפה:
- במסוף Google Cloud, נכנסים לדף Datasets.
- לוחצים על השם של מערך הנתונים. יופיע הדף Dataset details.
- לוחצים על הכרטיסייה תצוגה מקדימה.
- בקטע סגנונות מפה משויכים, לוחצים על הוספת סגנון מפה.
- מסמנים את תיבות הסימון של סגנונות המפה שרוצים לשייך ולוחצים על שמירה.
החלת סגנונות על מערך הנתונים
כדי להחיל סגנונות על מערך נתונים:
יוצרים פונקציית factory של סגנונות שמטמיעה את הממשק
FeatureLayer.StyleFactory. הפונקציה הזו מגדירה את לוגיקת הסגנון של קבוצת נתונים.Call
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 מפונקציית הסגנון של התכונה, למשל אם רוצים שקבוצת משנה של תכונות תישאר בלתי נראית.
לדוגמה, משתמשים ב-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; }
החלת סגנון על שכבת מאפיינים של קבוצת הנתונים
בדוגמה הזו מוחלת פונקציית יצירת סגנון על מצולע בשכבת התכונות של מערך הנתונים. פונקציית יצירת הסגנון מחילה סגנון מילוי וקו מותאמים אישית על הפוליגון:
אם עדיין לא עשיתם זאת, פועלים לפי השלבים במאמר תחילת העבודה כדי ליצור מזהה מפה חדש וסגנון מפה חדש. חשוב להפעיל את שכבת התכונות 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(); }יוצרים פונקציה של מפעל סגנונות ומחילים אותה על שכבת המפה Datasets.
בדוגמה הבאה, אותו מילוי וקו מתאר מוחלים על כל התכונות במערך הנתונים.
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 למפעל הסגנונות, למשל אם רוצים שחלק מהתכונות יישארו בלתי נראות.