צורות

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

מפה עם קו מרובה נקודות אדום

ממשק ה-API של מפות Google ל-Android כולל כמה דרכים פשוטות להוסיף צורות למפות שלכם, כדי להתאים אותן אישית לאפליקציה שלכם.

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

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

דוגמאות קוד

המדריך להוספת מצולעים ומצולעים לייצוג אזורים ומסלולים כולל את כל הקוד לאפליקציה פשוטה ל-Android.

בנוסף, מאגר ApiDemos ב-GitHub כולל דוגמאות שממחישות את השימוש בצורות והתכונות שלהן:

רב-קו

מחלקת Polyline מגדירה בקבוצה של פלחים מחוברים במפה. אובייקט Polyline מורכב מקבוצת מיקומים של LatLng ויוצרת סדרה של פלחי קו שמקשרים את המיקומים האלה לפי רצף.

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

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

כדי להוסיף נקודות לאובייקט PolylineOptions צריך להתקשר אל PolylineOptions.add(). שימו לב שהשיטה הזו משתמשת במספר משתנה של פרמטרים, כך שתוכלו להוסיף מספר נקודות בו-זמנית (אתם יכולים גם להתקשר ל-PolylineOptions.addAll(Iterable<LatLng>) אם הנקודות כבר כלולות ברשימה).

לאחר מכן אפשר להוסיף את ה-Polyline למפה באמצעות קריאה אל GoogleMap.addPolyline(PolylineOptions). השיטה מחזירה אובייקט Polyline שבאמצעותו ניתן לשנות את ה-Polyline במועד מאוחר יותר.

קטע הקוד הבא ממחיש כיצד להוסיף מלבן למפה:

Java


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

Kotlin


// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

המלבן מוצג במפה באופן הבא:

מפה עם קו מרובה מלבן

כדי לשנות את צורת הפולין אחרי הוספתו, אפשר להתקשר ל-Polyline.setPoints() ולספק רשימה חדשה של נקודות ל-Polyline.

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

התאמה אישית של קו מרובה נקודות

יש כמה דרכים להתאים אישית את המראה של קווים מרובים:

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

כדי להשתמש בהתאמה אישית של Polyline, עליכם להשתמש ב-18.1.0 ואילך של SDK של מפות ל-Android ולהשתמש ב-SDK העדכני ביותר של מפות Google ל-Android.

יצירת קו מרובה-צבעים

מפה עם קו מרובה נקודות צבעוני

ניתן להשתמש בטווחים כדי ליצור פילוחי צבעים מרובים של פוליגון, על ידי יצירת אובייקטים מסוג StyleSpan והוספתם ל-PolylineOptions באמצעות הaddSpan() או שיטות addSpans(). כברירת מחדל, כל פריט במערך יגדיר את הצבע של פלח הקו המתאים. בדוגמה הבאה אפשר להגדיר צבעי פילוחים כדי ליצור הרבה קווים עם פלחים אדומים וירוקים:

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

יצירת Polyline הדרגתי

מפה עם קו מרובה צבעים הדרגתי

ניתן להגדיר שיפוע על ידי ציון שני מספרים שלמים בגודל 32 סיביות alpha-red-green-blue (ARGB), כדי לציין את צבעי ההתחלה והסיום של התנועה. כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה, צריך לבצע קריאה ל-PolylineOptions.addSpan(). בדוגמה הבאה אפשר לראות יצירת פולימר רב-קו אדום עד צהוב מגן החיות וודלנד פארק ועד קירקלנד, וושינגטון.

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

יצירת קו מרובה חותמות

מפה עם פוליגון חתום

ניתן להגדיר את המראה של מצולע מרובה במרקם של מפת סיביות חוזרת. לשם כך, צריך ליצור StampStyle מתוך TextureStyle ולאחר מכן להגדיר את המאפיין הזה באובייקט האפשרויות של הטופס על ידי קריאה ל-PolylineOptions.addSpan() כפי שמוצג כאן:

Java


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

Kotlin


val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

אירועים של Polyline

כברירת מחדל, פוליגונים לא ניתנים ללחיצה. אפשר להפעיל ולהשבית את הקליקביליות על ידי קריאה ל-Polyline.setClickable(boolean).

תוכלו להשתמש ב-OnPolylineClickListener כדי להקליק על אירועים בפולין בלחיצה. כדי להגדיר את ה-listener הזה במפה, צריך להפעיל את GoogleMap.setOnPolylineClickListener(OnPolylineClickListener). כשמשתמש לוחץ על קו מרובה-משתמשים, תקבלו שיחה חוזרת אל onPolylineClick(Polyline).

פוליגונים

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

אפשר להוסיף את Polygon למפה באותה דרך שבה מוסיפים Polyline. קודם כול יוצרים אובייקט PolygonOptions ומוסיפים לו כמה נקודות. הנקודות האלה ייצרו את קו המתאר של הפוליגון. לאחר מכן מוסיפים את הפוליגון למפה על ידי קריאה ל-GoogleMap.addPolygon(PolygonOptions) כדי להחזיר אובייקט Polygon.

קטע הקוד הבא מוסיף מלבן למפה.

Java


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

Kotlin


// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

כדי לשנות את צורת הפוליגון אחרי הוספתו, תוכלו להפעיל את Polygon.setPoints() וגם להוסיף רשימה חדשה של נקודות לקו הפוליגון.

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

השלמה אוטומטית של מצולע

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

שני הפוליגונים שמופיעים בהמשך הם שווי ערך, והקריאה ל-polygon.getPoints() בכל אחד מהם תחזיר את כל 4 הנקודות.

Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

Kotlin


val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

יצירת פוליגון חלול

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

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

קטע הקוד הבא ייצור מלבן יחיד, עם חור מלבני קטן יותר.

Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

Kotlin


val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

הפוליגון החלול מופיע במפה כפי שמוצג למטה:

מפה עם קו מרובה מלבן חלול

אירועי מצולע

כברירת מחדל, לא ניתן ללחוץ על פוליגונים. אפשר להפעיל ולהשבית את הקליקביליות על ידי קריאה ל-Polygon.setClickable(boolean).

להשתמש ב-OnPolygonClickListener כדי להאזין לקליקים על פוליגונים שניתנים ללחיצה. כדי להגדיר את ה-listener הזה במפה, צריך להפעיל את GoogleMap.setOnPolygonClickListener(OnPolygonClickListener). בכל פעם שמשתמש ילחץ על פוליגון, תקבלו שיחה חוזרת ב-onPolygonClick(Polygon).

עיגולים

מפה עם עיגול

בנוסף למחלקה כללית אחת (Polygon), ה-API של מפות Google כולל גם מחלקות ספציפיות לאובייקטים של Circle כדי לפשט את הבנייה.

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

  • center בתור LatLng.
  • radius במטרים.

לאחר מכן מוגדר עיגול כקבוצת הנקודות על פני השטח של כדור הארץ, שנמצאים במרחק radius מטרים מה-center הנתון. בשל האופן שבו היטל ה-Merkator המשמש את ממשק ה-API של מפות Google גורם ליצירת שטח על משטח ישר, הוא ייראה על גבי עיגול כמעט מושלם במפה כשהוא נמצא ליד קו המשווה, והוא יופיע בצורת עיגול לא מצומצמת יותר (על המסך) ככל שהעיגול יתרחק מקו המשווה.

כדי לשנות את צורת העיגול אחרי ההוספה שלו, אפשר להתקשר אל Circle.setRadius() או Circle.setCenter() ולמסור ערכים חדשים.

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

קטע הקוד הבא מוסיף מעגל למפה על ידי יצירת אובייקט CircleOptions וקריאה לפונקציה GoogleMap.addCircle(CircleOptions):

Java


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

Kotlin


// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

אירועים מעגלים

כברירת מחדל, לא ניתן ללחוץ על מעגלים. אפשר להפעיל או להשבית את הקליקביליות על ידי קריאה ל-GoogleMap.addCircle() באמצעות CircleOptions.clickable(boolean), או על ידי חיוג אל Circle.setClickable(boolean).

שימוש ב-OnCircleClickListener כדי להאזין לקליקים על אירועים מעגליים שניתן ללחוץ עליהם. כדי להגדיר את ה-listener הזה במפה, צריך להפעיל את GoogleMap.setOnCircleClickListener(OnCircleClickListener).

כשמשתמש ילחץ על מעגל, תקבלו התקשרות חוזרת למספר onCircleClick(Circle), כפי שמוצג בדוגמת הקוד הבאה:

Java


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

Kotlin


val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

התאמה אישית של המראֶה

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

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

Java


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

המפה מופיעה כפי שמוצג בהמשך:

מפה עם קו מרובה נקודות ממלבורן עד פרת&#39;

הערה: את רוב הצורות אפשר ליישם בכל הצורות שמתוארות, אבל יכול להיות שחלק מהמאפיינים לא יהיו הגיוניים בצורות מסוימות (למשל, ל-Polyline לא יכול להיות צבע מילוי כי אין לו פנים.

צבע משיכה

צבע הקווים הוא מספר שלם ב-32 ביט. כדי להגדיר את המאפיין הזה באובייקט האפשרויות בצורת הצורה, צריך לבצע קריאה ל-*Options.strokeColor() (או PolylineOptions.color() במקרה של קו מרובה נקודות). אם לא מוגדר צבע, צבע ההדגשה המוגדר כברירת מחדל הוא שחור (Color.BLACK).

אחרי הוספת הצורה למפה, אפשר לגשת לצבע הקווים על ידי קריאה ל-getStrokeColor() (או getColor() ל-polyline) ולשנות אותו באמצעות קריאה ל-setStrokeColor() (setColor() for a polyline).

צבע המילוי

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

צבע המילוי הוא מספר שלם בתקן אלפא-אדום-ירוק-כחול (ARGB) של 32 ביט, שמציין את השקיפות והצבע של החלק הפנימי של הצורה. כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הטופס, צריך לבצע קריאה ל-*Options.fillColor(). אם לא צוין צבע, צבע ההדגשה המוגדר כברירת מחדל יהיה שקוף (Color.TRANSPARENT).

אחרי הוספת הצורה למפה, אפשר לגשת לצבע מילוי על ידי קריאה ל-getFillColor(), וניתן לשנות אותו על ידי הפעלת setFillColor().

רוחב משיכה

הרוחב של סימון הקו, כצף בפיקסלים (px). הרוחב לא משתנה כש המפה מוגדלת (כלומר, לצורה יהיה אותו רוחב משיכת בכל רמות הזום). מגדירים את המאפיין הזה באובייקט האפשרות של הצורה על ידי קריאה ל-*Options.strokeWidth() (או PolylineOptions.width() ל-polyline). אם לא בחרתי אפשרות, ברירת המחדל עם שחייה היא 10 פיקסלים.

לאחר ההוספה של הצורה למפה, אפשר לגשת לרוחב הקווים על ידי קריאה ל-getStrokeWidth() (או getWidth() ל-polyline) וניתן לשנות אותו על ידי קריאה ל-setStrokeWidth() (setWidth() for a polyline).

שבץ

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

בדוגמה הבאה מגדירים את קו ביטול הנעילה של רצף רב-פעמי לרצף של נקודה, ואחריו רווח של 20 פיקסלים, מקף באורך 30 פיקסלים ופער נוסף של 20 פיקסלים.

Java


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

Kotlin


val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

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

סוגי מפרקים

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

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

Java


polyline.setJointType(JointType.ROUND);

      

Kotlin


polyline.jointType = JointType.ROUND

      

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

רישיות

אפשר לציין סגנון Cap לכל קצה של קו מרובה נקודות. האפשרויות הן ישבן (ברירת מחדל), ריבוע, עיגול או מפת סיביות מותאמת אישית. בוחרים את הסגנון ב-PolylineOptions.startCap וב-PolylineOptions.endCap, או משתמשים בשיטות getter ו-Setter מתאימות.

קטע הקוד הבא מציין עיגול עגול בתחילת קו מרובה נקודות.

Java


polyline.setStartCap(new RoundCap());

      

Kotlin


polyline.startCap = RoundCap()

      

קטע הקוד הבא מציין מפת סיביות מותאמת אישית עבור מודעת הסיום:

Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Kotlin


polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

כשאתם משתמשים במפת סיביות בהתאמה אישית, עליכם לציין את רוחב המשיכת של ההפניות בפיקסלים. ה-API משנה את קנה המידה של מפת הסיביות בהתאם. רוחב השרטוט של קובץ העזר הוא הרוחב של הקווים שבהם השתמשתם כשעיצבתם את תמונת מפת הסיביות של המכסה, במידות המקוריות של התמונה. ברירת המחדל של רוחב הקווים בקובץ העזר היא 10 פיקסלים. רמז: כדי לקבוע את רוחב השרטוט של קובץ העזר, צריך לפתוח את תמונת מפת סיביות ב-100% עם התקרבות בעורך תמונות, ולהציג את הרוחב הרצוי של קו החיתוך ביחס לתמונה.

אם משתמשים ב-BitmapDescriptorFactory.fromResource() כדי ליצור את מפת הסיביות, חשוב להשתמש במשאב בלתי תלוי בדחיסות (nodpi).

פלחים גיאודזית

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

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

כדי להגדיר את המאפיין הזה באובייקט האפשרות צורת הצורה, צריך לבצע קריאה ל-*Options.geodesic() כאשר הערך של true מציין שהפלחים צריכים להיות משוייכים כגיאודגיה, ו-false מציין שהפלחים צריכים להיות קווים ישרים. אם לא הוקש דבר, ברירת המחדל היא פלחים לא גיאודזיים (false).

אחרי הוספת הצורה למפה, אפשר לגשת להגדרה הגיאודזית באמצעות קריאה ל-isGeodesic(), וניתן לשנות אותה על ידי חיוג אל setGeodesic().

אינדקס Z

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

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

כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה, יש להתקשר אל *Options.zIndex(). אם לא מצוין, אינדקס z המוגדר כברירת מחדל הוא 0. אחרי הוספת הצורה למפה, כדי לגשת לאינדקס ה-z, יש להתקשר ל-getZIndex().setZIndex()

חשיפה

בחשיפה מופיע אם יש לשרטט את הצורה במפה, כאשר true מציין שיש לשרטט אותה ו-false מציין שאין לשרטט אותה. היא מאפשרת באופן זמני לא להציג צורה במפה. כדי להסיר לתמיד את הצורה מהמפה, צריך להפעיל את remove() בצורה הזו.

כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה, צריך להתקשר אל *Options.visible(). אם המדיניות לא צוינה, ברירת המחדל לחשיפה תהיה true. אחרי הוספת הצורה למפה, אפשר יהיה לגשת לתצוגה על ידי חיוג אל isVisible(), וניתן יהיה לשנות אותה על ידי חיוג אל setVisible().

שיוך נתונים לצורה

ניתן לאחסן אובייקט נתונים שרירותי באמצעות קו מרובה נקודות, פוליגון או מעגל באמצעות השיטה setTag() של הצורה, ולאחזר את האובייקט באמצעות getTag(). לדוגמה, קוראים ל-Polyline.setTag() כדי לאחסן אובייקט של נתונים באמצעות Polyline, ומתקשרים ל-Polyline.getTag() כדי לאחזר את אובייקט הנתונים.

הקוד שבהמשך מגדיר תג שרירותי (A) של ה-Polyline שצוין:

Java


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

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

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