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
в PopoverElement
в 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();