Модели — это трёхмерные объекты, которые можно добавлять в сцену для представления других объектов. 3D-карты в Maps JavaScript API поддерживают включение моделей gLTF. Эти модели можно масштабировать и вращать для дальнейшей настройки.
Модели должны поддерживать основные свойства glTF PBR . Расширения или свойства расширений не поддерживаются.
Добавить модель
Конструктор Model3DElement принимает набор параметров Model3DElementOptions , определяющих координаты LatLng модели, и набор параметров для позиционирования модели.
Модели поддерживают следующие опции:
-
position: Местоположение модели, выраженное в координатахLatLng. -
orientation: Вращение системы координат модели. Вращения применяются в следующем порядке: крен, наклон, а затем направление. -
scale: Масштабирует модель в ее координатном пространстве. Значение по умолчанию —1. -
altitudeMode: Способ интерпретации высоты, выраженной вposition. -
src: URL модели.
В следующем примере показано добавление модели на карту и ее изменение с использованием некоторых доступных параметров настройки:
async function init() { // Import the needed libraries. const { Map3DElement, Model3DElement } = await google.maps.importLibrary('maps3d'); const map = new Map3DElement({ center: { lat: 39.1178, lng: -106.4452, altitude: 4395.4952 }, range: 1500, tilt: 74, heading: 0, mode: 'HYBRID', gestureHandling: 'COOPERATIVE', }); const model = new Model3DElement({ src: 'https://maps-docs-team.web.app/assets/windmill.glb', position: { lat: 39.1178, lng: -106.4452, altitude: 4495.4952 }, orientation: { heading: 0, tilt: 270, roll: 90 }, scale: 0.15, altitudeMode: 'CLAMP_TO_GROUND', }); document.body.append(map); map.append(model); } void init();
Добавить интерактивную модель
Модели также поддерживают взаимодействие. В следующем примере масштаб модели изменяется при щелчке.
async function init() { // Import the needed libraries. const { Map3DElement, Model3DInteractiveElement } = await google.maps.importLibrary('maps3d'); const map = new Map3DElement({ center: { lat: 39.1178, lng: -106.4452, altitude: 4395.4952 }, range: 1500, tilt: 74, heading: 0, mode: 'HYBRID', gestureHandling: 'COOPERATIVE', }); const model = new Model3DInteractiveElement({ src: 'https://maps-docs-team.web.app/assets/windmill.glb', position: { lat: 39.1178, lng: -106.4452, altitude: 4495.4952 }, orientation: { heading: 0, tilt: 270, roll: 90 }, scale: 0.15, altitudeMode: 'CLAMP_TO_GROUND', }); model.addEventListener('gmp-click', function () { this.scale = Math.random() * (0.5 - 0.1) + 0.1; }); document.body.append(map); map.append(model); } void init();