כדי להחיל סגנונות לקווים ולמילוי על פוליגונים של גבולות בשכבת תכונות:
ליצור פונקציה להגדרות היצרן של סגנון שמטמיעה את
FeatureLayer.StyleFactory
גרפי. הפונקציה הזו מגדירה את לוגיקת העיצוב לשכבת תכונה.שיחת טלפון
FeatureLayer.setFeatureStyle()
כדי להחיל את הפונקציה להגדרות המקוריות על שכבת התכונות.
המפה הבאה לדוגמה ממחישה את פוליגון הגבול של אזור יחיד בשכבת המאפיינים של רשות מוניציפאלית.
יצירת פונקציות יצרן של סגנון
הפונקציה להגדרות המקוריות של הסגנון חלה על כל פוליגון בתכונה המושפעת.
בזמן הגדרת הפונקציה בשכבת התכונות. הפונקציה הזו חייבת
החזרת FeatureStyle
שמציין איך לעצב את הפוליגון.
SDK של מפות Google ל-Android מעביר
Feature
למופע של סגנון היצרן. המכונה Feature
מייצגת את
מטא-נתונים של תכונה, כדי שתקבלו גישה למטא-נתונים במפעל הסגנון
מותאמת אישית.
פעולת היצרן של הסגנון אמורה תמיד להחזיר תוצאות עקביות הוחלו. לדוגמה, אם רוצים לצבוע באופן אקראי קבוצה של פיצ'רים, לא אמור להופיע חלק אקראי בפונקציה של סגנון מאפיין, עלולות לגרום לתוצאות לא רצויות.
מכיוון שהפונקציה פועלת על כל תכונה בשכבה, חשוב. כדי למנוע השפעה על זמני הרינדור:
מפעילים רק את שכבות התכונות הנדרשות.
קוראים לפונקציה
FeatureLayer.setFeatureStyle(null)
כששכבת התכונות מפסיקה בשימוש.
הגדרה של שרטוט ומילוי של פוליגון
כשמעצבים פוליגון של גבולות בפונקציית היצרן של סגנון, אפשר להגדיר את הדברים הבאים:
צבע הקו והשקיפות של גבול הפוליגון בפורמט הצבעים ARGB. כפי שמוגדר על ידי
Color
בכיתה. ערך ברירת המחדל הוא שקוף (0x00000000).רוחב הקו של גבול הפוליגון בפיקסלים במסך. ערך ברירת המחדל הוא 2.
צבע מילוי ושקיפות של הפוליגון בפורמט הצבעים ARGB, כמו מוגדר על ידי
Color
בכיתה. ערך ברירת המחדל הוא שקוף (0x00000000).
חיפוש מזהי מקומות לצורך טירגוט תכונות
אפליקציות רבות מחילים סגנונות על תכונה על סמך מיקום התכונה. עבור לדוגמה, ייתכן שתרצו להחיל עיצוב למדינות, לאזורים שונים או באזורים שונים. המיקום של הישות מיוצג על ידי place ID (מזהה מקום).
המזהה הייחודי של מקום במסד הנתונים של כתובות ב-Google וב-Google מפות Google. כדי לקבל מזהה מקום:
- שימוש בממשקי API ובקידוד גיאוגרפי של מקומות כדי לחפש אזורים לפי שם ולקבל מזהי מקומות של אזורים בתוך את הגבולות שצוינו.
- קבלת נתונים מאירועים מסוג קליק. הפעולה הזו מחזירה את התכונה שתואמת לאזור שעליו לחץ המשתמש, גישה למזהה המקום ולקטגוריית סוג התכונה שלו.
הכיסוי משתנה בהתאם לאזור. צפייה הגבולות של Google אפשר לקבל פרטים נוספים.
שמות גיאוגרפיים זמינים ממקורות רבים, כגון USGS Board on Generative Name, את הרצף ארה"ב קובצי Gazetteer.
שימוש ב-PlaceFeature לקבלת מזהה מקום
PlaceFeature
מחלקה היא מחלקה משנית של המחלקה Feature
.
הוא מייצג תכונת מקום (תכונה עם מזהה מקום) שכוללת
תכונות מסוג ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
,
COUNTRY
, LOCALITY
, POSTAL_CODE
וגם SCHOOL_DISTRICT
.
כשמזהה המקום זמין,
ה-SDK של מפות Google ל-Android מעביר מופע של PlaceFeature
למפעל הסגנון
כדי שאפשר יהיה לקבוע את המיקום של הישות.
דוגמה למפעל לייצור סגנון
הדוגמה הזו מחילה פונקציית סגנון להגדרות המקוריות על פוליגון ברשות המוניציפאלית.
בשכבת זרימת הנתונים. הגדרת היצרן של הסגנון קובעת את מזהה המקום של התכונה
באמצעות המכונה PlaceFeature
. אם מזהה המקום הוא עבור האנה, הוואי אז
הפונקציה מחילה סגנון מילוי וקו קווים מותאמים אישית על הפוליגון:
אם עדיין לא עשית זאת, יש לפעול לפי השלבים המפורטים ב- איך מתחילים כדי ליצור מזהה מפה וסגנון מפה חדשים. צריך להפעיל את הרשות המוניציפאלית. בשכבת זרימת הנתונים.
קבלת הפניה לשכבת התכונה 'לוקאל' כשהמפה מופעלת.
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() }יצירת פונקציה להגדרות המקוריות של הסגנון והחלתה על הרשות המוניציפאלית בשכבת זרימת הנתונים.
הדוגמה הבאה מחילה את הפונקציה רק אם המיקום מזהה התכונה הוא עבור האנה, הוואי ("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)
.