Mapbox Sources - izudon/izudon.github.io GitHub Wiki
Source とは
- 地図に表示する情報の「源(みなもと)」です。
- ベクトルタイル、ラスタタイル、GeoJSON、オーバレイする画像、動画など、 Leaflet では必ずしもそうでなかったものも含めたあらゆるものが、 Mapbox では Source として扱われます。
Leaflet | Mapbox |
---|---|
タイル | -> Source ラスタタイル(type: raster ) |
- | -> Source ベクトルタイル(type: vector ) |
- | -> Source 標高タイル(type: raster-dem ) |
GeoJSON | -> Source GeoJSON(type: geojson ) |
(オーバレイ)画像 | -> Source 画像(type: image ) |
(オーバレイ)動画 | -> Source 動画(type: video ) |
Source の追加
- スタイルファイルに記述し、スタイルファイルが読み込まれる。
スタイルファイルの例(抜粋):"sources": { "openmaptiles": { "type": "vector", "tiles": ["https://hfu.github.io/jp1710_{z}/{x}/{y}.mvt"], "attribution": "(c) OpenStreetMap contributors (c) OpenMapTiles", "maxzoom": 14 },
- JavaScript の中で、動的に追加される。
JavaScript の例(抜粋):map.addSource( 'kansai-cinema', { type: 'geojson', data: '/assets/map/kansai-cinema.geojson' });
- JavaScript の中で、Layer とともに、動的に追加される。
JavaScript の例(抜粋):map.addLayer({ 'id': 'points', 'type': 'symbol', 'source': { 'type': 'geojson', 'data': { 'type': 'FeatureCollection', 'features': [ { 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': [0, 0] } } } } } });
Source の中身(プロパティ)
Source
オブジェクトはid:
type:
のほか、
data:
url:
coordinates:
など様々なプロパティを持つが、
そのバリエーションがtype
ごとに変わってくる。- バリエーションの類似ごとに
type:
をグループ分けすると、
下記のようになる。vector
raster
raster-dem
geojson
image
video
- Mapbox GL JS | Stype specification | Sources
の項には、
サイドバーにこのtype
ごとに節が切ってあって、
どのtype
でどのプロパティが必要とされるかを
記述するという書き方をとっている。
以上で、このページで言いたいことは大体言い終わって、 あとは「ドキュメント見てください」でいいと思うのだが。
ドキュメントは英語なのでちょっとだけ要約を載せておきます。
type
別 Source
のプロパティ
共通
id
- あとで
Layer
などからSource
を指定するときなどに
識別子として用いる。
- あとで
type
Source
のタイプ(型)を指定する。
vector
raster
raster-dem
グループ
共通
attribution
- 出典(情報の出元)、権利関係などの注釈。
minzoom
- データが有効となるズームレベル
maxzoom
- データが無効となるズームレベル
bounds
- データが存在する緯度経度範囲
scheme
xyz
またはtms
tiles
- TileJSON 形式に則ったタイルの配列。
- 負荷分散・可用性向上目的で複数書く(配列)ことができる。
url
- TileJSON の URL に記載するような URL 。
- TileJSON を
tiles:
に記載せずとも URL だけでも動かせる。
vector
promoteId
Feature
のid
として採用するPropterties
のname
。- Undefined ID using
promoteId
with GeoJSON · Issue #9119 · mapbox/mapbox-gl-jspromoteId should directly point to the feature attribute name:
"promoteId": "filename"
raster
raster-dem
tileSize
- 世の多くのタイルは 256px x 256px だが、
Mapbox のタイルは 512px x 512px 。 - こういうケースのためにタイルサイズ(ピクセル)を
オプション指定できる。
- 世の多くのタイルは 256px x 256px だが、
raster-dem
encoding
- 標高をコード化してある方式を記述する。
terrarium
ormapbox
defaultmapbox
geojson
グループ
attribution
- 出典(情報の出元)、権利関係などの注釈。
data
- GeoJSON のデータそのもの。
- GeoJSON のパス(URL)、または GeoJSON オブジェクト。
- GeoJSON パスの例
map.addSource( 'kansai-cinema', { type: 'geojson', data: '/assets/map/kansai-cinema.geojson' });
- GeoJSON オブジェクトの例
map.addSource( 'kansai-cinema', { 'type': 'geojson', 'data': { 'type': 'FeatureCollection', 'features': [ { 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': [0, 0] } } } } });
- パスで指定する場合は、同一ドメイン内か、
CORS された(信頼性担保された)サイトのものでなければならない。
buffer
generateId
lineMetrics
maxzoom
promoteId
Feature
のid
として採用するPropterties
のname
。- Undefined ID using
promoteId
with GeoJSON · Issue #9119 · mapbox/mapbox-gl-jspromoteId should directly point to the feature attribute name:
"promoteId": "filename"
tolerance
クラスタ機能
- 高いズームレベルでは別々に表示させていた「点」を、
低いズームレベルではまとめて1個の「点」として表示する機能がある。- cluster (ブドウの)房、集める、集まる、群がる。
- 以下の4プロパティはこれを実現するためのもの。
cluster
:true
ならこの機能を使う。clusterRaduis
: この半径以内に近づいた点同士は集約表示(多分)。clusterMaxzoom
: このズームレベル以降は個別表示。clusterProperties
: クラスタ化で集計に使える変数フィールド。
きっとどこかまた別のところで言及します。
メモ:
point_count
cluster_id
- getClusterExpansionZoom()
- getClusterChildren()
- getClusterLeaves()
- ブログ記事
- Cluster data with Mapbox / Jerrie Pelser's Blog
- 親切、丁寧、具体的。実際に試して書いたと思われる記事。
- Clustering properties with Mapbox and HTML marker
- Mapbox の中の人のブログ記事
- Cluster data with Mapbox / Jerrie Pelser's Blog
- GitHub 上での質疑応答
- Mapbox 公式に上がっている作例
image
video
グループ
共通
coordinates
- オーバレイする矩形の四隅の緯度経度を
左上から順に時計回りに書いていく。
- オーバレイする矩形の四隅の緯度経度を
image
url
- 画像のパス
video
urls
- 動画のパスの配列。
image
と違って配列なのは、ブラウザの互換性のため、
異なる動画フォーマットのもの一連を登録できるように。
以上!
お疲れ様でした。