Display a point cloud 3D building model on a map.

Use the MapTiler 3D JS module to display a point cloud 3D building model on a map. Thanks to the 3D JS module we can view the cloud point model and navigate inside the building.

This demonstration show a compact control interface that allows to modify diferent model parameters and observe their immediate impact on the model’s behavior.

NPM module setup


npm install --save @maptiler/sdk @maptiler/3d lil-gui
import { Map, MapStyle, config } from '@maptiler/sdk';
import '@maptiler/sdk/dist/maptiler-sdk.css';
import { Layer3D, AltitudeReference } from '@maptiler/3d';
import { GUI } from 'lil-gui';

config.apiKey = 'YOUR_MAPTILER_API_KEY_HERE';

const map = new Map({
  container: document.getElementById('map'),
  style: MapStyle.DATAVIZ,
  zoom: 19.6,
  center: [-0.1765222, 51.4963662],
  pitch: 63,
  bearing: -24.8,
  maxPitch: 85,
  terrainControl: true,
  terrain: true,
  maptilerLogo: true,
});

(async () => {
  await map.onReadyAsync();

  map.setSky({
    "sky-color": "#b2ddfa",
    "horizon-color": "#FFFFFF",
    "fog-color": "#FFFFFF",
    "fog-ground-blend": 0.8,
    "horizon-fog-blend": 0.1,
    "sky-horizon-blend": 0.6,
    "atmosphere-blend": 0.5,
  })

  const layer3D = new Layer3D("custom-3D-layer");
  map.addLayer(layer3D);

  // Increasing the intensity of the ambient light 
  layer3D.setAmbientLight({intensity: 2});

  // Adding a point light
  layer3D.addPointLight("point-light", {intensity: 30});

  const gui = new GUI({ width: 200 });

  const meshId = "some-mesh";
  const mesh = await layer3D.addMeshFromURL(
    meshId,
    "https://docs-media.maptiler.com/docs/models/hintze_hall_nhm_london_point_cloud.glb",
    {
      lngLat: [-0.17642900347709656, 51.496198574865645],
      heading: 83.6,
      scale: 1,
      visible: true,
      altitude: 0,
      altitudeReference: AltitudeReference.GROUND,
    }
  );

  const guiObj = {
    opacity: 1,
    pointSize: 1,
    fov: map.transform.fov,
  }

  gui.add( guiObj, 'opacity', 0, 1)
  .onChange((opacity) => {
    mesh.modify({opacity});
  });

  gui.add( guiObj, 'pointSize', 0, 20, 0.1 )
  .onChange((pointSize) => {
    mesh.modify({pointSize});
  });

  gui.add( guiObj, 'fov', 0, 60)
  .onChange((fov) => {
    map.transform.fov = fov;
    map.triggerRepaint();
  });

})()
Display a building model based on point cloud data on a map.

Display a building model

Examples

Display wireframe 3D building models from point cloud data.

Getting started with AR maps: Display an AR control on your maps

Start with AR maps

Examples

Add an AR control button to map 3D viewports.

Add a airplane 3D model

Add a plane 3D model

Examples

Add and position flying 3D airplane models on maps.

Display a 3D terrain map

3D terrain map

Tutorials

Create and display 3D terrain maps on web pages.

Was this helpful?