مقدمه
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نقشه یا تمامنمای «نمای خیابان» را که باید باز شود مشخص میکند.anchorحاوی نقطه لنگر است (برای مثالMarker). اگر گزینهanchornullیا تعریفنشده باشد، پنجره اطلاعات در ویژگیpositionآن باز خواهد شد.
TypeScript
// This example displays a marker at the center of Australia. // When the user clicks the marker, an info window opens. async function init(): Promise<void> { // Import the needed libraries. const [{ InfoWindow }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); // Get the map element and the inner map from it. const mapElement = document.querySelector('gmp-map')!; const innerMap = mapElement.innerMap; // Get the center of the map. const center = mapElement.center; // Create the info window content. const heading = document.createElement('h1'); heading.textContent = 'Uluru (Ayers Rock)'; const content = document.createElement('div'); const infoParagraph = document.createElement('p'); infoParagraph.textContent = `Uluru, also referred to as Ayers Rock, 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.`; content.appendChild(infoParagraph); const link = document.createElement('a'); link.href = 'https://en.wikipedia.org/w/index.php?title=Uluru'; link.textContent = 'https://en.wikipedia.org/w/index.php?title=Uluru'; link.target = '_blank'; content.appendChild(link); // Create the info window. const infoWindow = new InfoWindow({ headerContent: heading, content, ariaLabel: 'Uluru', maxWidth: 500, // Set max width (optional). }); // Create the marker. const marker = new AdvancedMarkerElement({ position: center, map: innerMap, title: 'Uluru (Ayers Rock)', gmpClickable: true, }); // Open the info window when the map loads. infoWindow.open({ anchor: marker, map: innerMap, }); // Open the info window when the marker is clicked. marker.addEventListener('gmp-click', () => { infoWindow.open({ anchor: marker, map: innerMap, }); }); } void init();
JavaScript
// This example displays a marker at the center of Australia. // When the user clicks the marker, an info window opens. async function init() { // Import the needed libraries. const [{ InfoWindow }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); // Get the map element and the inner map from it. const mapElement = document.querySelector('gmp-map'); const innerMap = mapElement.innerMap; // Get the center of the map. const center = mapElement.center; // Create the info window content. const heading = document.createElement('h1'); heading.textContent = 'Uluru (Ayers Rock)'; const content = document.createElement('div'); const infoParagraph = document.createElement('p'); infoParagraph.textContent = `Uluru, also referred to as Ayers Rock, 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.`; content.appendChild(infoParagraph); const link = document.createElement('a'); link.href = 'https://en.wikipedia.org/w/index.php?title=Uluru'; link.textContent = 'https://en.wikipedia.org/w/index.php?title=Uluru'; link.target = '_blank'; content.appendChild(link); // Create the info window. const infoWindow = new InfoWindow({ headerContent: heading, content, ariaLabel: 'Uluru', maxWidth: 500, // Set max width (optional). }); // Create the marker. const marker = new AdvancedMarkerElement({ position: center, map: innerMap, title: 'Uluru (Ayers Rock)', gmpClickable: true, }); // Open the info window when the map loads. infoWindow.open({ anchor: marker, map: innerMap, }); // Open the info window when the marker is clicked. marker.addEventListener('gmp-click', () => { infoWindow.open({ anchor: marker, map: innerMap, }); }); } void init();
مثال زیر maxWidth پنجره اطلاعات را تنظیم میکند:
مشاهده مثال.
تمرکز روی پنجره اطلاعات
برای تنظیم کردن فوکوس روی پنجره اطلاعات، روش focus() آن را فراخوانی کنید. پیشنهاد میشود از این روش همراه با رویداد visible
قبلاز تنظیم کردن تمرکز استفاده کنید. فراخوانی این روش در پنجره اطلاعات غیرقابلمشاهده
تأثیری نخواهد داشت. برای نمایان کردن پنجره اطلاعات، open() «تماس» را فشار دهید.
بستن پنجره اطلاعات
بهطور پیشفرض، پنجره اطلاعات تا زمانی که کاربر روی کنترل بستن (یک علامت ضربدر در بالا سمت راست پنجره اطلاعات) کلیک نکند یا کلید ESC را فشار ندهد، باز میماند.
همچنین میتوانید پنجره اطلاعات را با فراخوانی روش close()
آن بهطور صریح ببندید.
وقتی پنجره اطلاعات بسته میشود، تمرکز به عنصری که قبلاز باز شدن پنجره اطلاعات در تمرکز بوده است برمیگردد. اگر آن عنصر دردسترس نباشد،
تمرکز به نقشه برمیگردد. برای لغو این رفتار، میتوانید به
رویداد closeclick گوش دهید و تمرکز را بهصورت دستی مدیریت کنید، همانطور که در
مثال زیر نشان داده شده است:
infoWindow.addListener('closeclick', ()=>{ // Handle focus manually. });
جابهجا کردن پنجره اطلاعات
چند روش برای تغییر مکان پنجره اطلاعات وجود دارد:
- در پنجره اطلاعات با
setPosition()تماس بگیرید، یا - پنجره اطلاعات را بااستفاده از روش
InfoWindow.open()به نشانگر جدیدی متصل کنید. توجه: اگرopen()را بدون ارسال نشانگر فراخوانی کنید،InfoWindowاز موقعیت مشخصشده هنگام ساخت ازطریق حرفیInfoWindowOptionsاستفاده خواهد کرد.