עיצוב פוליגון גבול

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

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

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

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

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

צילום מסך של פוליגון של האנה, הוואי.

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

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

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

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

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

  • מפעילים רק את שכבות המפה שצריך.

  • צריך להפעיל את FeatureLayer.setFeatureStyle(null) כששכבה במפה כבר לא בשימוש.

הגדרת קו המתאר והמילוי של הפוליגון

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

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

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

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

חיפוש מזהי מקומות כדי לטרגט תכונות

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

מזהה מקום הוא המזהה הייחודי של מקום במסד הנתונים של "מקומות Google" ובמפות Google. כדי לקבל מזהה מקום:

רמת הכיסוי תלויה באזור. פרטים נוספים זמינים במאמר כיסוי הגבולות של Google.

שמות גיאוגרפיים זמינים ממקורות רבים, כמו USGS Board on Geographic Names ו-U.S. Gazetteer Files.

שימוש ב-PlaceFeature כדי לקבל מזהה מקום

הכיתה PlaceFeature היא כיתת משנה של הכיתה Feature. הוא מייצג מאפיין של מקום (מאפיין עם מזהה מקום) שכולל מאפיינים מהסוגים ADMINISTRATIVE_AREA_LEVEL_1,‏ ADMINISTRATIVE_AREA_LEVEL_2,‏ COUNTRY,‏ LOCALITY,‏ POSTAL_CODE ו-SCHOOL_DISTRICT.

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

דוגמה למפעל לעיצוב

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

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

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

    Java

    private FeatureLayer localityLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
    // Apply style factory function to LOCALITY layer. styleLocalityLayer(); }

    Kotlin

    private var localityLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
    // Apply style factory function to LOCALITY layer. styleLocalityLayer() }

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

    בדוגמה הבאה, הפונקציה חלה רק אם מזהה המקום של המאפיין הוא של האנה, הוואי ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). אם מזהה המקום שצוין הוא לא של האנה, הוואי, הסגנון לא יחול.

    Java

    private void styleLocalityLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
    // Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }

    Kotlin

    private fun styleLocalityLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
    // Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }

הסרת סגנון משכבה

כדי להסיר את הסגנון משכבה, מפעילים את FeatureLayer.setFeatureStyle(null).