How to switch map projection programmatically
This example shows how to switch between “mercator” and “globe” map projection programmatically.
The choice between Mercator and Globe can be done at different levels and moments in the lifecycle of the map, yet, unless stated otherwise, Mercator remains the default.
NPM module setup
npm install --save @maptiler/sdk
import { Map, MapStyle, config } from '@maptiler/sdk';
import '@maptiler/sdk/dist/maptiler-sdk.css';
config.apiKey = 'YOUR_MAPTILER_API_KEY_HERE';
const map = new Map({
container: 'map', // container's id or the HTML element to render the map
style: MapStyle.SATELLITE,
center: [-70.8, 0], // starting position [lng, lat]
zoom: 1, // starting zoom
projection: 'globe' //enable globe projection
});
document.getElementById('projection').addEventListener('click', function () {
const projection = map.getProjection()
if (projection.type === 'globe') {
map.setProjection("mercator", { persist: true });
} else {
map.setProjection("globe", { persist: true });
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<title>How to switch map projection programmatically | NPM example</title>
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div id="map"></div>
<button id="projection">Switch map projection</button>
<script type="module" src="./main.js"></script>
</body>
</html>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }
#projection {
display: block;
position: relative;
margin: 0px auto;
width: 50%;
height: 40px;
padding: 10px;
border: none;
border-radius: 3px;
font-size: 12px;
text-align: center;
color: #fff;
background: #ee8a65;
}
Related examples
Projection control (globe)
TutorialsToggle between Mercator and globe projections using map controls.
Add a 3D model to globe using MapTiler 3D JS
ExamplesIntegrate 3D models into your interactive globe map surface.