התנהגות התנגשות

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

בדף הזה מוסבר איך לשלוט בהתנהגות ההתנגשות של סמן.

הגדרת התנהגות התנגשות של סמן

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

  • סמנים מתקדמים שנוצרים באמצעות BitmapDescriptorFactory נקראים סמנים מסוג bitmap. הסמנים האלה מצוירים על ידי המפה המרכזית.

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

כדי להגדיר את התנהגות ההתנגשות, מגדירים את הערך של AdvancedMarkerOptions.collisionBehavior לאחת מהאפשרויות הבאות:

  • CollisionBehavior.REQUIRED: (ברירת המחדל) הצגת הסמן תמיד, ללא קשר להתנגשות.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL תמיד להציג את הסמן, ללא קשר להתנגשות, ולהסתיר את כל התוויות או הסימנים OPTIONAL_AND_HIDES_LOWER_PRIORITY שיחפו על הסמן.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY יציגו את הסמן רק אם הוא לא חופף לסמנים אחרים.

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

    • אם שני סמני view חופפים, יוצג הסימן עם הערך zIndex הגבוה יותר. אם יש להם אותו zIndex, הסמן האחרון שנוצר חופף לסמנים שנוצרו לפניו.

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

בדוגמה הבאה מוצגת הגדרת התנהגות התנגשות של סמן:

Kotlin

// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
val collisionBehavior: Int = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(LatLng(10.0, 10.0))
    .collisionBehavior(collisionBehavior)

val marker: Marker = map.addMarker(advancedMarkerOptions) ?: error("Failed to add marker")

      

Java

// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL;
AdvancedMarkerOptions options = new AdvancedMarkerOptions()
        .position(new LatLng(10.0, 10.0))
        .collisionBehavior(collisionBehavior);

Marker marker = map.addMarker(options);