Variable label placement

Use text-variable-anchor to allow high priority labels to shift position to stay on the map.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Variable label placement</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<script src="https://unpkg.com/trackasia-gl@1.0.5/dist/trackasia-gl.js"></script>
<link href="https://unpkg.com/trackasia-gl@1.0.5/dist/trackasia-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>
var places = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"description": "Sai Gon Grill Restaurant",
"icon": "restaurant"
},
"geometry": {
"type": "Point",
"coordinates": [
106.699271,
10.776905
]
}
},
{
"type": "Feature",
"properties": {
"description": "Bach Tung Diep Park",
"icon": "park"
},
"geometry": {
"type": "Point",
"coordinates": [
106.699072,
10.776388
]
}
},
{
"type": "Feature",
"properties": {
"description": "Duc Ba Church",
"icon": "church"
},
"geometry": {
"type": "Point",
"coordinates": [
106.699164,
10.779592
]
}
},
{
"type": "Feature",
"properties": {
"description": "Bike Party",
"icon": "bicycle"
},
"geometry": {
"type": "Point",
"coordinates": [
106.696013,
10.775508
]
}
},
{
"type": "Feature",
"properties": {
"description": "Opera Ho Chi Minh",
"icon": "music"
},
"geometry": {
"type": "Point",
"coordinates": [
106.70327,
10.776694
]
}
}
]
} ;
var map = new trackasiagl.Map({
container: 'map',
style: 'https://maps.track-asia.com/styles/v1/streets.json?key=public_key',
center: [106.696652,10.777563],
zoom: 13
});
map.on('load', function () {
// Add a GeoJSON source containing place coordinates and information.
map.addSource('places', {
'type': 'geojson',
'data': places
});
map.addLayer({
'id': 'poi-labels',
'type': 'symbol',
'source': 'places',
'layout': {
'text-field': ['get', 'description'],
'text-variable-anchor': ['top', 'bottom', 'left', 'right'],
'text-radial-offset': 0.5,
'text-justify': 'auto',
'icon-image': ['concat', ['get', 'icon'], '']
}
});
map.rotateTo(180, { duration: 10000 });
});
</script>
</body>
</html>