Skip to content

Instantly share code, notes, and snippets.

@malwoodsantoro
Last active March 4, 2022 04:39
Show Gist options
  • Save malwoodsantoro/4431ae6475fe54f84fe57b23bf6b991b to your computer and use it in GitHub Desktop.
Save malwoodsantoro/4431ae6475fe54f84fe57b23bf6b991b to your computer and use it in GitHub Desktop.
Show popups using a vector tile source
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Add a vector tile source</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<script src="https://api.mapbox.com/mapbox-gl-js/v2.7.0/mapbox-gl.js"></script>
<link href="https://api.mapbox.com/mapbox-gl-js/v2.7.0/mapbox-gl.css" rel="stylesheet" />
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
mapboxgl.accessToken = 'pk.eyJ1IjoibWFsLXdvb2QiLCJhIjoiY2oyZ2t2em50MDAyMzJ3cnltMDFhb2NzdiJ9.X-D4Wvo5E5QxeP7K_I3O8w';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v10',
zoom: 13,
center: [-73.9912, 40.7198]
});
map.on('load', function () {
map.addSource('nyc-test', {
type: 'vector',
url: 'mapbox://mal-wood.ckjz01o3x0jsm27x8bpjvot9t-5jcsf'
});
map.addLayer({
'id': 'nyc',
'type': 'symbol',
'source': 'nyc-test',
'source-layer': 'test-nyc',
'layout': {
'icon-image': 'marker-11',
'icon-size': 3,
'icon-allow-overlap': true
}
});
map.on('click', 'nyc', function (e) {
var coordinates = e.features[0].geometry.coordinates.slice();
var test = e.features[0].properties.test;
while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
}
new mapboxgl.Popup()
.setLngLat(coordinates)
.setHTML(test)
.addTo(map);
});
map.on('mouseenter', 'nyc', function () {
map.getCanvas().style.cursor = 'pointer';
});
map.on('mouseleave', 'nyc', function () {
map.getCanvas().style.cursor = '';
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment