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

בדף הזה מוסבר איך לנהל התנגשויות בין סמנים שמוסיפים למפה לבין תוויות ברירת מחדל, כמו נקודות עניין (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);