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

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

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

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

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

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

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

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

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

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

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

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

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

  • צריך לקרוא ל-FeatureLayer.setFeatureStyle(null) כששכבת תכונות לא בשימוש יותר.

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

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

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

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

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

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

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

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

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

שמות גיאוגרפיים זמינים ממקורות רבים, כמו המועצה של USGS לשמות גיאוגרפיים וקובצי ה-Gazetteer של ארה"ב.

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

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

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

דוגמה למפעל לייצור סגנון

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

  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).