差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
markerclustergroup内のデータを集計する [2021/11/22 12:04] – 133.11.144.12 | markerclustergroup内のデータを集計する [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== markerClusterGroup内のデータを集計する ====== | ||
- | |||
- | ===== markerClusterGroupを作成 ===== | ||
- | |||
- | var markers = L.markerClusterGroup({ iconCreateFunction: | ||
- | |||
- | '' | ||
- | |||
- | ===== マーカーの描画 ===== | ||
- | |||
- | [[Leaflet地図上に円グラフをマーカーとして表示する | こちら]] を参考にして、円グラフを描画する。 | ||
- | |||
- | var marker = L.marker([sampleData.latitude, | ||
- | |||
- | ここでは'' | ||
- | |||
- | ===== ポップアップの作成 ===== | ||
- | |||
- | var popupContent = "< | ||
- | pieInputList.forEach(fishData => { | ||
- | popupContent = popupContent + "< | ||
- | }) | ||
- | popupContent = popupContent + "</ | ||
- | |||
- | var popup = L.popup().setContent(popupContent); | ||
- | marker.bindPopup(popup); | ||
- | |||
- | 個々の円グラフで表示するポップアップをtableタグで作成する。'' | ||
- | |||
- | ===== markerClusterGroup用のIconを描画する関数の設定 ===== | ||
- | |||
- | function defineClusterIcon(cluster) { | ||
- | var children = cluster.getAllChildMarkers(); | ||
- | var iconRadius = radius + 0.05 * children.length; | ||
- | |||
- | var clusterData = { fish: {} }; | ||
- | var total = 0; | ||
- | |||
- | children.forEach(child => { | ||
- | var sampleData = child._popup._content; | ||
- | sampleData = sampleData.split("</ | ||
- | for (var i = 1; i < sampleData.length - 1; i++) { | ||
- | var fishData = sampleData[i].split("</ | ||
- | var fishName = fishData[0].replace("< | ||
- | var fishStock = parseFloat(fishData[1].replace("</ | ||
- | if (fishName in clusterData.fish) { | ||
- | clusterData.fish[fishName] += parseFloat(fishStock); | ||
- | } else { | ||
- | clusterData.fish[fishName] = parseFloat(fishStock); | ||
- | } | ||
- | total += parseFloat(fishStock); | ||
- | } | ||
- | }) | ||
- | |||
- | var magnification = 100 / total; | ||
- | |||
- | Object.keys(clusterData.fish).forEach(fishName => { | ||
- | clusterData.fish[fishName] = clusterData.fish[fishName] * magnification; | ||
- | }); | ||
- | |||
- | var pieInputList = createPieInput(clusterData); | ||
- | |||
- | var tmp = d3.select("# | ||
- | |||
- | var arc = d3.arc() | ||
- | .outerRadius(iconRadius) | ||
- | .innerRadius(iconRadius / 3); | ||
- | |||
- | // | ||
- | tmp.append(" | ||
- | .append(" | ||
- | .selectAll(" | ||
- | .data(pie(pieInputList)) | ||
- | .enter() | ||
- | .append(" | ||
- | .attr(" | ||
- | .append(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | .attr(" | ||
- | |||
- | var myClusterIcon = L.divIcon({ | ||
- | html: tmp.html(), | ||
- | className: ' | ||
- | }); | ||
- | |||
- | tmp.select(" | ||
- | |||
- | return myClusterIcon; | ||
- | } | ||
- | |||