מבוא
הסמל
InfoWindow
מציג תוכן (בדרך כלל טקסט או תמונות) בחלון קופץ מעל המפה, במיקום נתון. לחלון המידע יש אזור תוכן
וגבעו מחודד. קצה הגבעול מחובר למיקום שצוין במפה. חלונות מידע מופיעים כתיבת דו-שיח לקוראי מסך.

בדרך כלל מצרפים חלון מידע לסמן, אבל אפשר גם לצרף חלון מידע לקו רוחב או קו אורך, כפי שמתואר בקטע 'הוספת חלון מידע' בהמשך.
באופן כללי, חלונות מידע הם סוג של שכבת-על. למידע נוסף על סוגים אחרים של שכבת-על, אפשר לקרוא את המאמר שרטוט במפה.
הוספת חלון מידע
הבנאי
InfoWindow
מקבל ליטרל של אובייקט
InfoWindowOptions
, שמציין את הפרמטרים הראשוניים להצגת חלון המידע.
ליטרל של האובייקט InfoWindowOptions
מכיל את השדות הבאים:
content
מכיל מחרוזת טקסט או צומת DOM להצגה בחלון המידע.- הפרמטר
pixelOffset
מכיל הפרש בין הקצה של חלון המידע לבין המיקום שבו חלון המידע מעוגן. בפועל, אין צורך לציין את השדה הזה. אפשר להשאיר את ערך ברירת המחדל. - השדה
position
מכיל אתLatLng
שבו חלון המידע מעוגן. הערה: אפשר לצרףInfoWindow
לאובייקטMarker
(במקרה כזה, המיקום שלו מבוסס על מיקום הסמן) או על המפה עצמה ב-LatLng
שצוין. אחת מהדרכים לאחזרLatLng
היא באמצעות שירות הקידוד הגיאוגרפי. פתיחת חלון מידע בסמן כלשהו תעדכן אוטומטית אתposition
. maxWidth
מציין את הרוחב המקסימלי של חלון המידע בפיקסלים. כברירת מחדל, חלון מידע מתרחב בהתאם לתוכן שלו, ומתרחב טקסט באופן אוטומטי אם חלון המידע ממלא את המפה. אם מוסיפיםmaxWidth
, חלון המידע יגלוש באופן אוטומטי כדי לאכוף את הרוחב שצוין. אם הוא מגיע לרוחב המקסימלי ויש מקום אנכי במסך, ייתכן שחלון המידע יתרחב אנכית.
התוכן של InfoWindow
עשוי להכיל מחרוזת של טקסט, קטע טקסט של HTML או רכיב DOM. כדי להגדיר את התוכן, יש לציין אותו בתוך
InfoWindowOptions
או להתקשר
ל-setContent()
ב-InfoWindow
באופן מפורש.
אם רוצים להגדיר את התוכן בצורה מפורשת, אפשר להוסיף אותו לרכיב <div>
ולעצב את <div>
באמצעות CSS. אפשר להשתמש גם ב-CSS כדי לאפשר גלילה. חשוב לשים לב שאם
לא מפעילים גלילה והתוכן חורג מהשטח הזמין בחלון
המידע, התוכן עלול להשתחרר מחלון המידע.
פתיחת חלון מידע
כשיוצרים חלון מידע, הוא לא מוצג באופן אוטומטי במפה.
כדי שחלון המידע יהיה גלוי, צריך להפעיל את השיטה open()
ב-InfoWindow
ולהעביר אובייקט בליטרל InfoWindowOpenOptions
שמציין את האפשרויות הבאות:
map
מציין את המפה או את הפנורמה של Street View שבהן יש לפתוח.- השדה
anchor
מכיל נקודת עוגן (לדוגמה,Marker
). אם האפשרותanchor
היאnull
או לא מוגדרת, חלון המידע ייפתח במאפייןposition
שלו.
TypeScript
// This example displays a marker at the center of Australia. // When the user clicks the marker, an info window opens. function initMap(): void { const uluru = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: uluru, } ); const contentString = '<div id="content">' + '<div id="siteNotice">' + "</div>" + '<h1 id="firstHeading" class="firstHeading">Uluru</h1>' + '<div id="bodyContent">' + "<p><b>Uluru</b>, also referred to as <b>Ayers Rock</b>, is a large " + "sandstone rock formation in the southern part of the " + "Northern Territory, central Australia. It lies 335 km (208 mi) " + "south west of the nearest large town, Alice Springs; 450 km " + "(280 mi) by road. Kata Tjuta and Uluru are the two major " + "features of the Uluru - Kata Tjuta National Park. Uluru is " + "sacred to the Pitjantjatjara and Yankunytjatjara, the " + "Aboriginal people of the area. It has many springs, waterholes, " + "rock caves and ancient paintings. Uluru is listed as a World " + "Heritage Site.</p>" + '<p>Attribution: Uluru, <a href="https://en.wikipedia.org/w/index.php?title=Uluru&oldid=297882194">' + "https://en.wikipedia.org/w/index.php?title=Uluru</a> " + "(last visited June 22, 2009).</p>" + "</div>" + "</div>"; const infowindow = new google.maps.InfoWindow({ content: contentString, ariaLabel: "Uluru", }); const marker = new google.maps.Marker({ position: uluru, map, title: "Uluru (Ayers Rock)", }); marker.addListener("click", () => { infowindow.open({ anchor: marker, map, }); }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example displays a marker at the center of Australia. // When the user clicks the marker, an info window opens. function initMap() { const uluru = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: uluru, }); const contentString = '<div id="content">' + '<div id="siteNotice">' + "</div>" + '<h1 id="firstHeading" class="firstHeading">Uluru</h1>' + '<div id="bodyContent">' + "<p><b>Uluru</b>, also referred to as <b>Ayers Rock</b>, is a large " + "sandstone rock formation in the southern part of the " + "Northern Territory, central Australia. It lies 335 km (208 mi) " + "south west of the nearest large town, Alice Springs; 450 km " + "(280 mi) by road. Kata Tjuta and Uluru are the two major " + "features of the Uluru - Kata Tjuta National Park. Uluru is " + "sacred to the Pitjantjatjara and Yankunytjatjara, the " + "Aboriginal people of the area. It has many springs, waterholes, " + "rock caves and ancient paintings. Uluru is listed as a World " + "Heritage Site.</p>" + '<p>Attribution: Uluru, <a href="https://en.wikipedia.org/w/index.php?title=Uluru&oldid=297882194">' + "https://en.wikipedia.org/w/index.php?title=Uluru</a> " + "(last visited June 22, 2009).</p>" + "</div>" + "</div>"; const infowindow = new google.maps.InfoWindow({ content: contentString, ariaLabel: "Uluru", }); const marker = new google.maps.Marker({ position: uluru, map, title: "Uluru (Ayers Rock)", }); marker.addListener("click", () => { infowindow.open({ anchor: marker, map, }); }); } window.initMap = initMap;
ניסוי לדוגמה
בדוגמה הבאה מגדירים את maxWidth
של חלון מידע: view example.
העברת המיקוד לחלון מידע
כדי להעביר את המיקוד לחלון מידע, צריך לקרוא לשיטה focus()
של החלון הזה. כדאי להשתמש בשיטה הזו יחד עם אירוע visible
לפני שמגדירים את המיקוד. להפעלת השיטה הזו בחלון מידע שאינו גלוי לא תהיה כל השפעה. צריך להתקשר אל open()
כדי
להגדיר חלון מידע כגלוי.
סגירת חלון מידע
כברירת מחדל, חלון מידע נשאר פתוח עד שהמשתמש לוחץ על פקד הסגירה (צלב בפינה הימנית העליונה של חלון המידע), או על מקש Esc.
אפשר גם לסגור את חלון המידע באופן מפורש על ידי קריאה של השיטה close()
.
כשסוגרים חלון מידע, המיקוד חוזר לרכיב שהיה המיקוד לפני שחלון המידע נפתח. אם הרכיב הזה לא זמין,
המיקוד יועבר בחזרה למפה. כדי לשנות את ההתנהגות הזו, אפשר להאזין לאירוע closeclick
ולנהל את המיקוד באופן ידני כפי שמוצג בדוגמה הבאה:
infoWindow.addListener('closeclick', ()=>{ // Handle focus manually. });
הזזה של חלון מידע
יש שתי דרכים לשנות את המיקום של חלון מידע:
- התקשרו אל
setPosition()
בחלון המידע, או - מצמידים את חלון המידע לסמן חדש באמצעות השיטה
InfoWindow.open()
. הערה: אם מבצעים קריאה אלopen()
בלי להעביר סמן,InfoWindow
ישתמש במיקום שצוין בזמן הבנייה דרך ליטרל האובייקטInfoWindowOptions
.
התאמה אישית
אי אפשר להתאים אישית את הכיתה InfoWindow
. במקום זאת, אפשר להיעזר בדוגמה של חלון קופץ מותאם אישית כדי לראות איך יוצרים חלון קופץ בהתאמה אישית.