ניהול סמנים, תוויות והתנגשויות של נקודות עניין

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

לפני שמתחילים

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

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

ציון רמות עדיפות של סמנים

משתמשים ב-Marker.‫CollisionBehavior כדי לציין עדיפות לסמן.

משתמשים באחד מהערכים הבאים:

  • ‫REQUIRED – ברירת מחדל. נדרשת הצגה של סמן שחופף לסמנים, לתוויות ולנקודות עניין אחרות.
  • ‫OPTIONAL_AND_HIDES_LOWER_PRIORITY – מציין שהסמן עשוי להיות מוחלף או חופף לסמן נדרש, או מוחלף בסמן OPTIONAL_AND_HIDES_LOWER_PRIORITY עם עדיפות גבוהה יותר. אפשר להשתמש ב-zIndex כדי לקבוע את סדר העדיפויות היחסי בין סמני OPTIONAL_AND_HIDES_LOWER_PRIORITY. ערך גבוה יותר של zIndex מציין עדיפות גבוהה יותר.
  • ‫REQUIRED_AND_HIDES_OPTIONAL – נדרש להציג סמן תוך הסתרת סמני OPTIONAL_AND_HIDES_LOWER_PRIORITY, תוויות או נקודות עניין שחופפים לסמן. יכול להיות שהסמן יחפוף לסמנים אחרים שנדרשים.

בדוגמת הקוד הבאה מוצגת הגדרה של CollisionBehavior לסמן חדש:

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