popover
מציג תוכן (בדרך כלל טקסט או תמונות) בחלון דו-שיח מעל המפה, במיקום נתון. בחלון הקופץ יש אזור תוכן וגוף צר. קצה הגבעול מחובר למיקום מסוים במפה. חלונות קופצים מופיעים כתיבת תיבת דו-שיח לקוראי מסך.
בדרך כלל מחברים חלון קופץ לסימן אינטראקטיבי, אבל אפשר גם לצרף חלון קופץ לקואורדינטה LatLngAltitude
ספציפית או להזיז אותו ביחס לסמן.
הוספת חלון קופץ
למסוף PopoverElement
מוגדר ליטרל אובייקט של PopoverElementOptions
, שמציין את הפרמטרים הראשוניים להצגת חלון הקופץ.
המילולית של האובייקט PopoverElementOptions
מכילה את השדות הבאים:
positionAnchor
: המיקוםLatLngAltitude
שבו יוצג הסמן. אם משתמשים בסמן, המערכת תשתמש במיקום הסמן במקום זאת.altitudeMode
: האופן שבו מתפרש הגובה של חלון הקופץ.lightDismissDisabled
: קובע אם חלון הקופץ יישאר פתוח כשהמשתמש לוחץ מחוץ אליו או מקשקש על מקשEsc
. כשהאפשרות הזו מוגדרת לערךtrue
, אפשר להציג במפה כמה חלונות קופצים שלlightDismissDisabled
בו-זמנית.open
: קובע אם חלון הקופץ צריך להיות פתוח או לא. ברירת המחדל היאfalse
.
התוכן של PopoverElement
יכול להכיל מחרוזת טקסט, קטע HTML או רכיב DOM. כדי להגדיר את התוכן, צריך לצרף אותו ל-PopoverElement
באופן מפורש בחריץ header
או default
.
אם רוצים לקבוע את הגודל של התוכן באופן מפורש, אפשר להוסיף אותו לרכיב <div>
ולקבוע את הסגנון של <div>
באמצעות CSS. חלונות קופצים ניתנים לגלילה כברירת מחדל, ויש להם גובה מוגדר מראש.
עיגון חלון קופץ לקואורדינטה LatLngAltitude
כשיוצרים חלון קופץ, הוא לא מוצג באופן אוטומטי במפה. כדי שהחלון הקופץ יוצג, צריך להגדיר את האפשרות open
לערך true
בקטע PopoverElement
. אפשר לבצע את הפעולה הזו במהלך היצירה או אחרי היצירה.
async function init() { const { AltitudeMode, Map3DElement, MapMode, PopoverElement } = await google.maps.importLibrary("maps3d"); const map = new Map3DElement({ center: { lat: 37.8204, lng: -122.4783, altitude: 0.407 }, range: 4000, tilt: 74, heading: 38, mode: MapMode.HYBRID, }); const popover = new PopoverElement({ altitudeMode: AltitudeMode.ABSOLUTE, open: true, positionAnchor: { lat: 37.819852, lng: -122.478549, altitude: 150 }, }); popover.append('Golden Gate Bridge'); map.append(popover); document.body.append(map); } init();
הצמדת חלון קופץ לסמן
אפשר לקשר חלונות קופצים למסמנים. כשמוסיפים חלון קופץ שמקובע לסמן, מגדירים את האפשרות PopoverElement.positionAnchor
כדי להשתמש בסמן.
async function init() { const { AltitudeMode, Map3DElement, Marker3DInteractiveElement, MapMode, PopoverElement } = await google.maps.importLibrary("maps3d"); const map = new Map3DElement({ center: { lat: 37.8204, lng: -122.4783, altitude: 0.407 }, range: 4000, tilt: 74, heading: 38, mode: MapMode.HYBRID, }); // Popovers can only be added to interactive Markers const interactiveMarker = new Marker3DInteractiveElement({ altitudeMode: AltitudeMode.ABSOLUTE, position: { lat: 37.819852, lng: -122.478549, altitude: 100 } }); const popover = new PopoverElement({ open: false, positionAnchor: interactiveMarker, }); popover.append('Golden Gate Bridge'); interactiveMarker.addEventListener('gmp-click', (event) => { // toggle the marker to the other state (unlee you are clicking on the marker itself when it reopens it) popover.open = !popover.open; }); map.append(interactiveMarker); map.append(popover); document.body.append(map); } init();
איך מחברים חלון קופץ לסמן באמצעות HTML
אפשר גם לקשר חלונות קופצים לסימנים בלי לכתוב קוד JavaScript, כפי שמתואר בהמשך:
<gmp-map-3d mode="hybrid" center="37.819852,-122.478549" tilt="75" range="2000" heading="330">
<gmp-marker-3d-interactive gmp-popover-target="my-popover" position="37.819852,-122.478549,100"></gmp-marker-3d-interactive>
<gmp-popover id="my-popover">
Golden Gate Bridge
</gmp-popover>
</gmp-map-3d>
<script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDGl0teQ6qwaBEdHazOWIEXd8XGWOZvoaM&v=beta&libraries=maps3d">
</script>
הוספת תוכן מותאם אישית לחלון קופץ
אפשר להוסיף תוכן מותאם אישית לחלונות קופצים על ידי הגדרת האפשרויות header
ו-content
:
async function init() {
const {Map3DElement, MapMode, PopoverElement, AltitudeMode} = await google.maps.importLibrary('maps3d');
const map = new Map3DElement({
center: { lat: 37.819852, lng: -122.478549, altitude: 2000 },
tilt: 75,
heading: 330,
mode: MapMode.SATELLITE,
});
const popover = new PopoverElement({
altitudeMode: AltitudeMode.ABSOLUTE,
open: true,
positionAnchor: {lat: 37.819852, lng: -122.478549, altitude: 100},
});
const header = document.createElement('div');
header.style.fontWeight = 'bold';
header.slot = 'header';
header.textContent = 'Golden Gate Bridge';
const content = document.createElement('div');
content.textContent = 'Iconic orange bridge connecting San Francisco to Marin.';
popover.append(header);
popover.append(content);
document.body.append(map);
map.append(popover);
}
init();