שליטה בהתנהגות במהלך התנגשות, בגובה ובמידת החשיפה

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

בדף הזה מוסבר איך לשלוט בהיבטים הבאים של סמנים מתקדמים:

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

הגדרת אופן הפעולה של סמן במקרה של התנגשות

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

כדי להגדיר את אופן הטיפול בהתנגשות, מגדירים את AdvancedMarkerElement.collisionBehavior לאחת מהאפשרויות הבאות:

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

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

TypeScript

const advancedMarker = new AdvancedMarkerElement({
  position: new google.maps.LatLng({ lat, lng }),
  map,
  collisionBehavior: collisionBehavior,
});

JavaScript

const advancedMarker = new AdvancedMarkerElement({
    position: new google.maps.LatLng({ lat, lng }),
    map,
    collisionBehavior: collisionBehavior,
});

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

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

TypeScript

const pin = new PinElement({
    background: '#4b2e83',
    borderColor: '#b7a57a',
    glyphColor: '#b7a57a',
    scale: 2.0,
});

const markerView = new AdvancedMarkerElement({
    map,
    content: pin.element,
    // Set altitude to 20 meters above the ground.
    position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 } as google.maps.LatLngAltitudeLiteral,
});

JavaScript

const pin = new PinElement({
    background: '#4b2e83',
    borderColor: '#b7a57a',
    glyphColor: '#b7a57a',
    scale: 2.0,
});
const markerView = new AdvancedMarkerElement({
    map,
    content: pin.element,
    // Set altitude to 20 meters above the ground.
    position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 },
});

שליטה בנראות של סמנים לפי רמת הזום במפה

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

כדי לשלוט בנראות של סמן מתקדם, יוצרים listener ומוסיפים פונקציה מותנית להגדרת AdvancedMarkerElement.map ל-null אם רמת הזום גבוהה מהרמה שצוינה, כמו בדוגמה הבאה:zoom_changed

TypeScript

map.addListener('zoom_changed', () => {
    const zoom = map.getZoom();
    if (zoom) {
        // Only show each marker above a certain zoom level.
        marker01.map = zoom > 14 ? map : null;
        marker02.map = zoom > 15 ? map : null;
        marker03.map = zoom > 16 ? map : null;
        marker04.map = zoom > 17 ? map : null;
    }
});

JavaScript

map.addListener("zoom_changed", () => {
  const zoom = map.getZoom();

  if (zoom) {
    // Only show each marker above a certain zoom level.
    marker01.map = zoom > 14 ? map : null;
    marker02.map = zoom > 15 ? map : null;
    marker03.map = zoom > 16 ? map : null;
    marker04.map = zoom > 17 ? map : null;
  }
});

השלבים הבאים

הגדרת סמנים שניתן ללחוץ עליהם ונגישים