popover
會在地圖上方特定位置的對話方塊中顯示內容 (通常為文字或圖片)。彈出式視窗是由一個內容區域和一個錐形柄所組成,錐形柄的尖端會連接地圖上的指定位置。螢幕閱讀器會將彈出式視窗視為對話方塊。
一般來說,您會將彈出式視窗附加至互動式標記,但也可以附加至特定 LatLngAltitude
座標,或從標記偏移。
新增彈出式視窗
PopoverElement
建構函式會採用 PopoverElementOptions
物件常值,指定用於顯示快顯視窗的初始參數。
PopoverElementOptions
物件常值包含下列欄位:
positionAnchor
:顯示標記的LatLngAltitude
位置。如果使用標記,系統會改用標記的位置。altitudeMode
:解讀彈出式視窗高度的方式。lightDismissDisabled
:使用者點選彈出式視窗外部或按下Esc
鍵時,彈出式視窗是否保持開啟狀態。如果將這個選項設為true
,地圖上就能同時顯示多個lightDismissDisabled
快顯視窗。open
:決定是否應開啟快顯視窗。預設值為false
。
PopoverElement
的內容可以包含一串文字、一段 HTML 程式碼或一個 DOM 元素。如要設定內容,請在 header
或 default
插槽中,將內容附加至 PopoverElement
。
如要明確調整內容尺寸,您可以將內容放入 <div>
元素中,然後使用 CSS 設定 <div>
的樣式。彈出式視窗預設可捲動,且有預先定義的高度上限。
將彈出式視窗錨定至 LatLngAltitude 座標
建立快顯視窗後,不會自動顯示在地圖上。如要顯示彈出式視窗,請在 PopoverElement
中將 open
選項設為 true
。您可以在建構期間或例項化後執行這項動作。
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();