差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
leaflet地図上に円グラフをマーカーとして表示する [2021/11/19 04:18] – 133.11.144.12 | leaflet地図上に円グラフをマーカーとして表示する [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Leaflet地図上に円グラフをマーカーとして表示する ====== | ||
- | Leafletで描画した地図に円グラフをマーカーとして表示する。 | ||
- | |||
- | 円グラフをマーカーとするには、'' | ||
- | |||
- | これを'' | ||
- | |||
- | ===== Leafletで地図を描画する ===== | ||
- | |||
- | var radius = 20; | ||
- | | ||
- | // | ||
- | var map = L.map(" | ||
- | | ||
- | // | ||
- | L.tileLayer(' | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | |||
- | ===== グラフ一時描画用のDOM要素の取得 ===== | ||
- | |||
- | var tmp = d3.select("# | ||
- | |||
- | グラフ一時描画用のDOM要素を選択。コード上では円グラフがこの要素内に描画されるが、すぐに削除するので表示はされない。 | ||
- | |||
- | ===== グラフ描画用の変数や関数の作成 ===== | ||
- | |||
- | // | ||
- | var color = d3.scaleOrdinal() | ||
- | .range(["# | ||
- | |||
- | // | ||
- | var pie = d3.pie() | ||
- | .value(function (d) { return d.value; }) | ||
- | .sort(null); | ||
- | |||
- | var arc = d3.arc() | ||
- | .outerRadius(radius) | ||
- | .innerRadius(radius / 3); | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | ===== MarkerClusterGroupオブジェクトを作成 ===== | ||
- | |||
- | '' | ||
- | |||
- | var markers = L.markerClusterGroup(); | ||
- | |||
- | ===== 各インプットデータでグラフの描画を行い、markerへの変換を行う ===== | ||
- | |||
- | sampleDataSet.forEach(sampleData => { | ||
- | var pieInputList = createPieInput(sampleData); | ||
- | // | ||
- | tmp.append(" | ||
- | .append(" | ||
- | .selectAll(" | ||
- | .data(pie(pieInputList)) | ||
- | .enter() | ||
- | .append(" | ||
- | .attr(" | ||
- | .append(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | var myIcon = L.divIcon({ html: tmp.html() }); | ||
- | |||
- | tmp.select(" | ||
- | |||
- | var marker = L.marker([sampleData.latitude, | ||
- | markers.addLayer(marker); | ||
- | }); | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | '' | ||
- | |||
- | ===== MarkerClusterGroupを地図のレイヤーに追加する ===== | ||
- | |||
- | map.addLayer(markers); |