1つの折れ線を描く
折れ線(LineString
)は'coordinates'
を折れ線の各点の2次元配列として与える。以下の例では、ベクトルタイルの地理院地図上に3つの点を結ぶ折れ線を描いている。レイアウトの'type'
は'line'
。線の色と太さは'paint'
で設定し、'layout'
では線の端部を丸く、折れ線の角を尖らせている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
let map = new maplibregl.Map({ container: 'map', style: 'https://gsi-cyberjapan.github.io/gsivectortile-mapbox-gl-js/std.json', center: [139.747, 35.677], zoom: 14, minZoom: 4, maxZoom: 17, }); map.on('load', () => { // 1つのLineStringを描く map.addSource('source_line_string', { type: 'geojson', data: { 'type': 'Feature', 'geometry': { 'type': 'LineString', 'coordinates': [ [139.747, 35.682], [139.742, 35.672], [139.752, 35.672], ] }, } }); // LineStringのスタイルを設定 map.addLayer({ 'id': 'layer_line_string', 'type': 'line', 'source': 'source_line_string', 'layout': { 'line-cap': 'round', 'line-join': 'miter' }, 'paint': { 'line-color': '#0000FF', 'line-width': 10 } }); }); |
data
で直接'LineString'
を指定できる。
1 2 3 4 5 6 7 8 |
data: { 'type': 'LineString', 'coordinates': [ [139.747, 35.682], [139.742, 35.672], [139.752, 35.672], ] } |
複数の折れ線を描く
以下の例ではaddSource
で2つのLineString
を描いている。addLayout
は上と同じものを使っており、addSource
とaddLayer
をmap.on
メソッド内で実行させる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// 複数のLineStringを描く map.addSource('source_line_string', { type: 'geojson', data: { 'type': 'FeatureCollection', 'features': [ { 'type': 'Feature', 'geometry': { 'type': 'LineString', 'coordinates': [ [139.747, 35.682], [139.742, 35.672], [139.752, 35.672], ] }, }, { 'type': 'Feature', 'geometry': { 'type': 'LineString', 'coordinates': [ [139.742, 35.680], [139.752, 35.680], [139.747, 35.670], ] } } ] } }); |
'FeatureCollection'
の代わりに直接'MultiLineString'
で書くと以下の通り。LineString
の場合は通過点の経緯度の配列の2次元配列だったが、MultiLineString
の場合はさらにそれらの配列、3次元配列になっている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
data: { 'type': 'MultiLineString', 'coordinates': [ [ [139.747, 35.682], [139.742, 35.672], [139.752, 35.672], ], [ [139.742, 35.680], [139.752, 35.680], [139.747, 35.670], ] ] } |