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

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

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

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

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

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

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

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

  • REQUIRED – ברירת המחדל. נדרשת הצגה של סמן שחופף לסימנים, לתוויות ולנקודות עניין אחרות.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY – סימן לכך שסימן ה-marker עשוי להיות מוחלף על ידי סימן נדרש, או להימצא בקטעים חופפים לסימן נדרש, או להיות מוחלף על ידי סימן 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);