maptiler with babylon

by Serkik

HTML

<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Add a 3D model with babylon.js</title>
<script src="https://cdn.maptiler.com/maptiler-sdk-js/v2.3.0/maptiler-sdk.umd.js"></script>
<link href="https://cdn.maptiler.com/maptiler-sdk-js/v2.3.0/maptiler-sdk.css" rel="stylesheet" />
<style>
  body {margin: 0; padding: 0;}
  #map {position: absolute; top: 0; bottom: 0; width: 100%;}
</style>
</head>
<body>
<script src="https://unpkg.com/babylonjs@5.42.2/babylon.js"></script>
<script src="https://unpkg.com/babylonjs-loaders@5.42.2/babylonjs.loaders.min.js"></script>
<div id="map"></div>
<script>
  maptilersdk.config.apiKey = 'IgMTbFvjizOKPAqDj5pd';
  var map = (window.map = new maptilersdk.Map({
      container: 'map',
      style: maptilersdk.MapStyle.STREETS,
      zoom: 18,
      center: [148.9819, -35.3981],
      pitch: 60,
      antialias: true // create the gl context with MSAA antialiasing, so custom layers are antialiased
  }));

  // World matrix parameters
  var worldOrigin = [148.9819, -35.39847];
  var worldAltitude = 0;

  // Maplibre.js default coordinate system (no rotations)
  // +x east, -y north, +z up
  //var worldRotate = [0, 0, 0];

  // Babylon.js default coordinate system
  // +x east, +y up, +z north
  var worldRotate = [Math.PI / 2, 0, 0];

  // Calculate mercator coordinates and scale
  var worldOriginMercator = maptilersdk.MercatorCoordinate.fromLngLat(
    worldOrigin,
    worldAltitude
  );
  const worldScale = worldOriginMercator.meterInMercatorCoordinateUnits();

  // Calculate world matrix
  var worldMatrix = BABYLON.Matrix.Compose(
    new BABYLON.Vector3(worldScale, worldScale, worldScale),
    BABYLON.Quaternion.FromEulerAngles(
      worldRotate[0],
      worldRotate[1],
      worldRotate[2]
    ),
    new BABYLON.Vector3(
      worldOriginMercator.x,
      worldOriginMercator.y,
     ...