code Snippetlanguage CDNpackage_2 NPM
content_copy Copyopen_in_new Open
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY' ;
const stores = [
{ name: 'Store Marais' , address: '15 Rue des Francs Bourgeois' , lng: 2.3621 , lat: 48.8571 },
{ name: 'Store Louvre' , address: '2 Rue de Rivoli' , lng: 2.3376 , lat: 48.8606 },
{ name: 'Store Montmartre' , address: '30 Rue Lepic' , lng: 2.3334 , lat: 48.8847 },
{ name: 'Store Latin Quarter' , address: '10 Rue Mouffetard' , lng: 2.3499 , lat: 48.8430 },
{ name: 'Store Bastille' , address: '5 Rue de la Roquette' , lng: 2.3715 , lat: 48.8534 }
];
const map = new maptilersdk. Map ({
container: 'map' ,
style: maptilersdk.MapStyle. STREETS ,
center: [ 2.3500 , 48.8600 ],
zoom: 13
});
const panel = document. getElementById ( 'store-panel' );
stores. forEach ( s => {
const popup = new maptilersdk. Popup ({ offset: 25 }). setHTML ( `<strong>${ s . name }</strong><br>${ s . address }` );
const marker = new maptilersdk. Marker ({ color: '#9C27B0' })
. setLngLat ([s.lng, s.lat])
. setPopup (popup)
. addTo (map);
const item = document. createElement ( 'div' );
item.className = 'store-item' ;
item.innerHTML = `<strong>${ s . name }</strong>${ s . address }` ;
item. addEventListener ( 'click' , () => {
map. flyTo ({ center: [s.lng, s.lat], zoom: 16 });
marker. togglePopup ();
});
panel. appendChild (item);
}); content_copy Copyopen_in_new Open
<! DOCTYPE html >
< html >
< head >
< meta charset = "utf-8" />
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
< link rel = "stylesheet" href = "https://cdn.maptiler.com/maptiler-sdk-js/v4.1.0/maptiler-sdk.css" />
< script src = "https://cdn.maptiler.com/maptiler-sdk-js/v4.1.0/maptiler-sdk.umd.min.js" ></ script >
< style >
body { margin : 0 ; padding : 0 ; }
#map { width : 100 % ; height : 100 vh ; }
#store-panel { position : absolute ; top : 0 ; left : 0 ; width : 280 px ; height : 100 % ; background : #141414 ; border-right : 2 px solid #2a2a2a ; z-index : 1000 ; overflow-y : auto ; padding : 0 ; }
#store-panel h3 { color : #e0e0e0 ; font-family : monospace ; padding : 12 px ; margin : 0 ; border-bottom : 2 px solid #2a2a2a ; }
.store-item { padding : 10 px 12 px ; border-bottom : 1 px solid #2a2a2a ; cursor : pointer ; color : #ccc ; font-size : 13 px ; }
.store-item:hover { background : #1e1e1e ; }
.store-item strong { color : #9C27B0 ; display : block ; margin-bottom : 2 px ; }
#map { margin-left : 280 px ; }
</ style >
</ head >
< body >
< div id = "map" ></ div >
< div id = "store-panel" >< h3 >Stores in Paris</ h3 ></ div >
< script >
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY' ;
const stores = [
{ name: 'Store Marais' , address: '15 Rue des Francs Bourgeois' , lng: 2.3621 , lat: 48.8571 },
{ name: 'Store Louvre' , address: '2 Rue de Rivoli' , lng: 2.3376 , lat: 48.8606 },
{ name: 'Store Montmartre' , address: '30 Rue Lepic' , lng: 2.3334 , lat: 48.8847 },
{ name: 'Store Latin Quarter' , address: '10 Rue Mouffetard' , lng: 2.3499 , lat: 48.8430 },
{ name: 'Store Bastille' , address: '5 Rue de la Roquette' , lng: 2.3715 , lat: 48.8534 }
];
const map = new maptilersdk. Map ({
container: 'map' ,
style: maptilersdk.MapStyle. STREETS ,
center: [ 2.3500 , 48.8600 ],
zoom: 13
});
const panel = document. getElementById ( 'store-panel' );
stores. forEach ( s => {
const popup = new maptilersdk. Popup ({ offset: 25 }). setHTML ( `<strong>${ s . name }</strong><br>${ s . address }` );
const marker = new maptilersdk. Marker ({ color: '#9C27B0' })
. setLngLat ([s.lng, s.lat])
. setPopup (popup)
. addTo (map);
const item = document. createElement ( 'div' );
item.className = 'store-item' ;
item.innerHTML = `<strong>${ s . name }</strong>${ s . address }` ;
item. addEventListener ( 'click' , () => {
map. flyTo ({ center: [s.lng, s.lat], zoom: 16 });
marker. togglePopup ();
});
panel. appendChild (item);
});
</ script >
</ body >
</ html > content_copy Copyopen_in_new Open
import * as maptilersdk from '@maptiler/sdk' ;
import '@maptiler/sdk/dist/maptiler-sdk.css' ;
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY' ;
const stores = [
{ name: 'Store Marais' , address: '15 Rue des Francs Bourgeois' , lng: 2.3621 , lat: 48.8571 },
{ name: 'Store Louvre' , address: '2 Rue de Rivoli' , lng: 2.3376 , lat: 48.8606 },
{ name: 'Store Montmartre' , address: '30 Rue Lepic' , lng: 2.3334 , lat: 48.8847 },
{ name: 'Store Latin Quarter' , address: '10 Rue Mouffetard' , lng: 2.3499 , lat: 48.8430 },
{ name: 'Store Bastille' , address: '5 Rue de la Roquette' , lng: 2.3715 , lat: 48.8534 }
];
const map = new maptilersdk. Map ({
container: 'map' ,
style: maptilersdk.MapStyle. STREETS ,
center: [ 2.3500 , 48.8600 ],
zoom: 13
});
const panel = document. getElementById ( 'store-panel' );
stores. forEach ( s => {
const popup = new maptilersdk. Popup ({ offset: 25 }). setHTML ( `<strong>${ s . name }</strong><br>${ s . address }` );
const marker = new maptilersdk. Marker ({ color: '#9C27B0' })
. setLngLat ([s.lng, s.lat])
. setPopup (popup)
. addTo (map);
const item = document. createElement ( 'div' );
item.className = 'store-item' ;
item.innerHTML = `<strong>${ s . name }</strong>${ s . address }` ;
item. addEventListener ( 'click' , () => {
map. flyTo ({ center: [s.lng, s.lat], zoom: 16 });
marker. togglePopup ();
});
panel. appendChild (item);
});
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY';
const stores = [
{ name: 'Store Marais', address: '15 Rue des Francs Bourgeois', lng: 2.3621, lat: 48.8571 },
{ name: 'Store Louvre', address: '2 Rue de Rivoli', lng: 2.3376, lat: 48.8606 },
{ name: 'Store Montmartre', address: '30 Rue Lepic', lng: 2.3334, lat: 48.8847 },
{ name: 'Store Latin Quarter', address: '10 Rue Mouffetard', lng: 2.3499, lat: 48.8430 },
{ name: 'Store Bastille', address: '5 Rue de la Roquette', lng: 2.3715, lat: 48.8534 }
];
const map = new maptilersdk.Map({
container: 'map',
style: maptilersdk.MapStyle.STREETS,
center: [2.3500, 48.8600],
zoom: 13
});
const panel = document.getElementById('store-panel');
stores.forEach(s => {
const popup = new maptilersdk.Popup({ offset: 25 }).setHTML(`<strong>${s.name}</strong><br>${s.address}`);
const marker = new maptilersdk.Marker({ color: '#9C27B0' })
.setLngLat([s.lng, s.lat])
.setPopup(popup)
.addTo(map);
const item = document.createElement('div');
item.className = 'store-item';
item.innerHTML = `<strong>${s.name}</strong>${s.address}`;
item.addEventListener('click', () => {
map.flyTo({ center: [s.lng, s.lat], zoom: 16 });
marker.togglePopup();
});
panel.appendChild(item);
}); <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://cdn.maptiler.com/maptiler-sdk-js/v4.1.0/maptiler-sdk.css" />
<script src="https://cdn.maptiler.com/maptiler-sdk-js/v4.1.0/maptiler-sdk.umd.min.js"></script>
<style>
body { margin: 0; padding: 0; }
#map { width: 100%; height: 100vh; }
#store-panel { position: absolute; top: 0; left: 0; width: 280px; height: 100%; background: #141414; border-right: 2px solid #2a2a2a; z-index: 1000; overflow-y: auto; padding: 0; }
#store-panel h3 { color: #e0e0e0; font-family: monospace; padding: 12px; margin: 0; border-bottom: 2px solid #2a2a2a; }
.store-item { padding: 10px 12px; border-bottom: 1px solid #2a2a2a; cursor: pointer; color: #ccc; font-size: 13px; }
.store-item:hover { background: #1e1e1e; }
.store-item strong { color: #9C27B0; display: block; margin-bottom: 2px; }
#map { margin-left: 280px; }
</style>
</head>
<body>
<div id="map"></div>
<div id="store-panel"><h3>Stores in Paris</h3></div>
<script>
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY';
const stores = [
{ name: 'Store Marais', address: '15 Rue des Francs Bourgeois', lng: 2.3621, lat: 48.8571 },
{ name: 'Store Louvre', address: '2 Rue de Rivoli', lng: 2.3376, lat: 48.8606 },
{ name: 'Store Montmartre', address: '30 Rue Lepic', lng: 2.3334, lat: 48.8847 },
{ name: 'Store Latin Quarter', address: '10 Rue Mouffetard', lng: 2.3499, lat: 48.8430 },
{ name: 'Store Bastille', address: '5 Rue de la Roquette', lng: 2.3715, lat: 48.8534 }
];
const map = new maptilersdk.Map({
container: 'map',
style: maptilersdk.MapStyle.STREETS,
center: [2.3500, 48.8600],
zoom: 13
});
const panel = document.getElementById('store-panel');
stores.forEach(s => {
const popup = new maptilersdk.Popup({ offset: 25 }).setHTML(`<strong>${s.name}</strong><br>${s.address}`);
const marker = new maptilersdk.Marker({ color: '#9C27B0' })
.setLngLat([s.lng, s.lat])
.setPopup(popup)
.addTo(map);
const item = document.createElement('div');
item.className = 'store-item';
item.innerHTML = `<strong>${s.name}</strong>${s.address}`;
item.addEventListener('click', () => {
map.flyTo({ center: [s.lng, s.lat], zoom: 16 });
marker.togglePopup();
});
panel.appendChild(item);
});
</script>
</body>
</html> import * as maptilersdk from '@maptiler/sdk';
import '@maptiler/sdk/dist/maptiler-sdk.css';
maptilersdk.config.apiKey = 'YOUR_MAPTILER_KEY';
const stores = [
{ name: 'Store Marais', address: '15 Rue des Francs Bourgeois', lng: 2.3621, lat: 48.8571 },
{ name: 'Store Louvre', address: '2 Rue de Rivoli', lng: 2.3376, lat: 48.8606 },
{ name: 'Store Montmartre', address: '30 Rue Lepic', lng: 2.3334, lat: 48.8847 },
{ name: 'Store Latin Quarter', address: '10 Rue Mouffetard', lng: 2.3499, lat: 48.8430 },
{ name: 'Store Bastille', address: '5 Rue de la Roquette', lng: 2.3715, lat: 48.8534 }
];
const map = new maptilersdk.Map({
container: 'map',
style: maptilersdk.MapStyle.STREETS,
center: [2.3500, 48.8600],
zoom: 13
});
const panel = document.getElementById('store-panel');
stores.forEach(s => {
const popup = new maptilersdk.Popup({ offset: 25 }).setHTML(`<strong>${s.name}</strong><br>${s.address}`);
const marker = new maptilersdk.Marker({ color: '#9C27B0' })
.setLngLat([s.lng, s.lat])
.setPopup(popup)
.addTo(map);
const item = document.createElement('div');
item.className = 'store-item';
item.innerHTML = `<strong>${s.name}</strong>${s.address}`;
item.addEventListener('click', () => {
map.flyTo({ center: [s.lng, s.lat], zoom: 16 });
marker.togglePopup();
});
panel.appendChild(item);
});