javascript - Centering text label in mapbox-gl-js? -


i'm trying center text label on feature polygon in mapbox-gl-js. possible? looks option related placement of label "symbol-placement" layout property (https://www.mapbox.com/mapbox-gl-style-spec/#symbol):

symbol-placement

optional enum. 1 of point, line. defaults point. label placement relative geometry. line can used on linestrings , polygons.

using "point" places label @ bottom right corner of feature:

enter image description here

ideas?

you can use turf library find centroid of polygon, make symbol point co-ordinate , add text field it.

see below example text label displayed on centroid of polygon feature

mapboxgl.accesstoken = 'pk.eyj1ijoiyxj1bmficmfoyw0ilcjhijoiodbjtv9wusj9.m5tbz5xyg8vhd-8qu7d_sa';    // initialize map  var map = new mapboxgl.map({      container: 'map', // container id      style: 'mapbox://styles/mapbox/streets-v8', //stylesheet location      center: [-68.13734351262877, 45.137451890638886], // starting position      zoom: 3 // starting zoom  });    // add feature  var feature = {    'type': 'feature',    'properties': {        'name': 'maine'    },    'geometry': {        'type': 'polygon',        'coordinates': [[[-67.13734351262877, 45.137451890638886],            [-66.96466, 44.8097],            [-68.03252, 44.3252],            [-69.06, 43.98],            [-70.11617, 43.68405],            [-70.64573401557249, 43.090083319667144],            [-70.75102474636725, 43.08003225358635],            [-70.79761105007827, 43.21973948828747],            [-70.98176001655037, 43.36789581966826],            [-70.94416541205806, 43.46633942318431],            [-71.08482, 45.3052400000002],            [-70.6600225491012, 45.46022288673396],            [-70.30495378282376, 45.914794623389355],            [-70.00014034695016, 46.69317088478567],            [-69.23708614772835, 47.44777598732787],            [-68.90478084987546, 47.184794623394396],            [-68.23430497910454, 47.35462921812177],            [-67.79035274928509, 47.066248887716995],            [-67.79141211614706, 45.702585354182816],            [-67.13734351262877, 45.137451890638886]]]    }  };    // make point feature displaying text;  // user turf library find centroid of polygon  var centroidpt = turf.centroid(feature);  centroidpt.properties.title = 'label';    map.on('style.load', function () {      // add feature source      map.addsource('maine', {          'type': 'geojson',          'data': feature      });        // add label point source      map.addsource('label', {      	'type': 'geojson',        'data': centroidpt      });    	// add feature style      map.addlayer({          'id': 'route',          'type': 'fill',          'source': 'maine',          'layout': {},          'paint': {              'fill-color': '#088',              'fill-opacity': 0.8          }      });        // add label style      map.addlayer({          'id': 'label-style',          'type': 'symbol',          'source': 'label',          'layout': {          	'text-field': 'label',                      },          'paint': {              'text-color': 'red'                        }      });        });
body { margin:0; padding:0; }  #map { position:absolute; top:0; bottom:0; width:100%; }
<script src="https://api.tiles.mapbox.com/mapbox.js/plugins/turf/v2.0.0/turf.min.js"></script>  <link href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.14.1/mapbox-gl.css" rel="stylesheet"/>  <script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.14.1/mapbox-gl.js"></script>      <div id='map'></div>


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -