<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>大ダワ林道 on 山とカンツォーネ</title><link>https://montagna-katokeyci.github.io/oohc/tags/%E5%A4%A7%E3%83%80%E3%83%AF%E6%9E%97%E9%81%93/</link><description>Recent content in 大ダワ林道 on 山とカンツォーネ</description><generator>Hugo</generator><language>ja-jp</language><lastBuildDate>Sat, 04 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://montagna-katokeyci.github.io/oohc/tags/%E5%A4%A7%E3%83%80%E3%83%AF%E6%9E%97%E9%81%93/index.xml" rel="self" type="application/rss+xml"/><item><title>Part 2 : 大ダワ林道古道（？）</title><link>https://montagna-katokeyci.github.io/oohc/posts/2026-07-04/</link><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid>https://montagna-katokeyci.github.io/oohc/posts/2026-07-04/</guid><description>&lt;p&gt;6月6日の続き。長沢谷の踊窪から二軒小屋尾根のP1300下に上がり、トラバースして崩落地手前の窪までたどったのが前回、今回はその続きを狙ったのだが。
緩傾斜で崖っぷちに出会わないぶん、動物の踏み跡だらけで道跡がさっぱりわからない。細かく上下しながら上流へ向かったが、徒労に終わった。&lt;/p&gt;
&lt;hr&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;項目&lt;/th&gt;
&lt;th style="text-align: left"&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;記録日&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;2026年7月04日（土）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;天候&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;晴れたり曇ったり→小雨→曇り&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;パーティ&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;モンターニャ単独&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;アクセス&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;西東京バスで東日原バス停&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;行程&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;東日原バス停、日原林道、長沢谷、二軒小屋尾根、大ダワ林道古道（？）、モミソ窪右岸尾根、二軒小屋尾根、日原林道、東日原バス停&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="コースタイム"&gt;コースタイム&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;記入中&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="コースマップ"&gt;コースマップ&lt;/h3&gt;
&lt;link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /&gt;
&lt;style&gt;
.gpx-container {
width: 100%;
margin: 1.5rem 0;
border: 1px solid #ccc;
border-radius: 8px;
overflow: hidden;
background: #fff;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
font-family: sans-serif;
}
.gpx-map { height: 380px; width: 100%; }
.gpx-summary {
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
background: #f8f9fa;
padding: 8px 10px;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
font-size: 0.8rem;
color: #333;
overflow-x: auto;
white-space: nowrap;
}
.gpx-summary-item {
margin: 0 4px;
}
.gpx-summary-item strong {
color: #007bff;
font-size: 0.95rem;
margin-left: 2px;
}
.gpx-chart-wrapper {
height: 180px;
width: 100%;
padding: 10px;
background: #fafafa;
box-sizing: border-box;
}
.start-marker-icon, .goal-marker-icon {
background: none;
border: none;
font-weight: bold;
font-size: 11px;
color: #ffffff;
text-align: center;
line-height: 18px;
}
&lt;/style&gt;
&lt;div class="gpx-container"&gt;
&lt;div id="map-28131025" class="gpx-map"&gt;&lt;/div&gt;
&lt;div id="summary-28131025" class="gpx-summary"&gt;
&lt;div class="gpx-summary-item"&gt;総距離:&lt;strong id="sum-dist-28131025"&gt;-&lt;/strong&gt; km&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;累積標高上り:&lt;strong id="sum-up-28131025"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;累積標高下り:&lt;strong id="sum-down-28131025"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;最高標高:&lt;strong id="sum-max-28131025"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;最低標高:&lt;strong id="sum-min-28131025"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gpx-chart-wrapper"&gt;
&lt;canvas id="chart-28131025"&gt;&lt;/canvas&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js"&gt;&lt;/script&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/chart.js"&gt;&lt;/script&gt;
&lt;script&gt;
window.addEventListener('load', function() {
var gpxUrl = '\/oohc\/posts\/2026-07-04\/20260704_20260704.gpx';
var map = L.map('map-28131025').setView([0, 0], 10);
L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: '&lt;a href="https://maps.gsi.go.jp/development/ichiran.html" target="_blank"&gt;国土地理院&lt;/a&gt;',
maxZoom: 18
}).addTo(map);
L.control.scale({
imperial: false,
position: 'bottomleft'
}).addTo(map);
var hoverMarker = null;
var trackPoints = [];
var timeLabels = [];
var ctx = document.getElementById('chart-28131025').getContext('2d');
var chart = new Chart(ctx, {
type: 'line',
data: {
datasets: [{
label: '標高 (m)',
data: [],
borderColor: '#007bff',
backgroundColor: 'rgba(0, 123, 255, 0.1)',
fill: true,
borderWidth: 1.5,
pointRadius: 0,
pointHoverRadius: 6,
tension: 0.1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
interaction: { mode: 'index', intersect: false },
plugins: {
legend: { display: false },
tooltip: {
callbacks: {
title: function(items) {
var index = items[0].dataIndex;
var timeStr = timeLabels[index] || '';
var distStr = items[0].raw.x.toFixed(2) + ' km';
return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;
},
label: function(item) {
return '標高: ' + item.raw.y + ' m';
}
}
}
},
scales: {
x: {
type: 'linear',
display: true,
title: { display: true, text: '距離 (km)', font: { size: 10 } },
ticks: {
font: { size: 10 }
},
grid: { color: 'rgba(0, 0, 0, 0.05)' }
},
y: {
display: true,
title: { display: true, text: '標高 (m)', font: { size: 10 } },
ticks: { font: { size: 10 } },
grid: { color: 'rgba(0, 0, 0, 0.05)' }
}
},
onHover: function(event, activeElements) {
if (activeElements &amp;&amp; activeElements.length &gt; 0) {
var index = activeElements[0].index;
updateHoverMarker(index);
}
}
}
});
function updateHoverMarker(index) {
var pt = trackPoints[index];
if (pt) {
if (!hoverMarker) {
hoverMarker = L.circleMarker([pt.lat, pt.lng], {
radius: 8,
fillColor: '#00ffff',
color: '#ffffff',
weight: 3,
opacity: 1,
fillOpacity: 1
}).addTo(map);
} else {
hoverMarker.setLatLng([pt.lat, pt.lng]);
}
}
}
function extractTrackData(layer) {
var pts = [];
var polylines = [];
if (typeof layer.getLatLngs === 'function') {
var latlngs = layer.getLatLngs();
var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;
flat.forEach(function(p) {
if (p &amp;&amp; typeof p.lat === 'number') {
pts.push({ lat: p.lat, lng: p.lng });
}
});
if (layer instanceof L.Polyline) {
polylines.push(layer);
}
} else if (typeof layer.eachLayer === 'function') {
layer.eachLayer(function(child) {
var res = extractTrackData(child);
pts = pts.concat(res.pts);
polylines = polylines.concat(res.polylines);
});
}
return { pts: pts, polylines: polylines };
}
fetch(gpxUrl)
.then(function(response) { return response.text(); })
.then(function(xmlText) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlText, "text/xml");
var trkpts = xmlDoc.getElementsByTagName("trkpt");
for (var i = 0; i &lt; trkpts.length; i++) {
var timeNode = trkpts[i].getElementsByTagName("time")[0];
if (timeNode) {
var dateObj = new Date(timeNode.textContent);
var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
timeLabels.push(timeStr);
} else {
timeLabels.push('');
}
}
})
.catch(function(err) {
console.error("GPX Time Parsing Error:", err);
});
new L.GPX(gpxUrl, {
async: true,
polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },
marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }
}).on('loaded', function(e) {
var gpx = e.target;
map.fitBounds(gpx.getBounds());
var totalDistMeters = gpx.get_distance();
var distKmNum = totalDistMeters / 1000;
var distKmStr = distKmNum.toFixed(2);
var maxEle = Math.round(gpx.get_elevation_max());
var minEle = Math.round(gpx.get_elevation_min());
var gainEle = Math.round(gpx.get_elevation_gain());
var lossEle = Math.round(gpx.get_elevation_loss());
document.getElementById('sum-dist-28131025').innerText = distKmStr;
document.getElementById('sum-up-28131025').innerText = gainEle;
document.getElementById('sum-down-28131025').innerText = lossEle;
document.getElementById('sum-max-28131025').innerText = maxEle;
document.getElementById('sum-min-28131025').innerText = minEle;
var eleData = gpx.get_elevation_data();
var chartDataPoints = [];
var extracted = extractTrackData(gpx);
trackPoints = extracted.pts;
if (trackPoints.length &gt; 0) {
var startPt = trackPoints[0];
var endPt = trackPoints[trackPoints.length - 1];
L.circleMarker([startPt.lat, startPt.lng], {
radius: 9,
fillColor: '#28a745',
color: '#ffffff',
weight: 2,
opacity: 1,
fillOpacity: 0.9
}).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });
L.circleMarker([endPt.lat, endPt.lng], {
radius: 9,
fillColor: '#dc3545',
color: '#ffffff',
weight: 2,
opacity: 1,
fillOpacity: 0.9
}).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });
}
eleData.forEach(function(item) {
var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);
var ele = Math.round(item[1]);
chartDataPoints.push({
x: parseFloat(dist.toFixed(2)),
y: ele
});
});
var dynamicStepSize = 1.0;
if (distKmNum &lt;= 5) {
dynamicStepSize = 0.5;
} else if (distKmNum &lt;= 20) {
dynamicStepSize = 1.0;
} else if (distKmNum &lt;= 40) {
dynamicStepSize = 5.0;
} else {
dynamicStepSize = 10.0;
}
chart.options.scales.x.max = distKmNum;
var allowedTicks = [];
for (var v = 0; v &lt; distKmNum; v += dynamicStepSize) {
allowedTicks.push(parseFloat(v.toFixed(1)));
}
chart.options.scales.x.ticks.callback = function(value) {
for (var i = 0; i &lt; allowedTicks.length; i++) {
if (Math.abs(value - allowedTicks[i]) &lt; 0.01) {
return value + ' km';
}
}
return '';
};
chart.options.scales.x.afterBuildTicks = function(axis) {
axis.ticks = allowedTicks.map(function(val) {
return { value: val };
});
};
chart.data.datasets[0].data = chartDataPoints;
chart.update();
extracted.polylines.forEach(function(polyline) {
polyline.on('mousemove', function(ev) {
if (!trackPoints.length) return;
var mouseLatLng = ev.latlng;
var closestIndex = 0;
var minDist = Infinity;
for (var i = 0; i &lt; trackPoints.length; i++) {
var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));
if (d &lt; minDist) {
minDist = d;
closestIndex = i;
}
}
updateHoverMarker(closestIndex);
chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);
chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });
chart.update();
});
});
}).addTo(map);
});
&lt;/script&gt;
&lt;hr&gt;
&lt;h3 id="山行記録"&gt;山行記録&lt;/h3&gt;
&lt;p&gt;記入中&lt;/p&gt;</description></item><item><title>Part 1 : 大ダワ林道古道（？）</title><link>https://montagna-katokeyci.github.io/oohc/posts/2026-06-06/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid>https://montagna-katokeyci.github.io/oohc/posts/2026-06-06/</guid><description>&lt;p&gt;きっかけは2つ。&lt;/p&gt;
&lt;p&gt;① 4月25日に小雲取谷出合いから撤収するさい、大ダワ林道をたどった。一度ならず死亡事故の起きている崩落地を高巻く最中、下流＝二軒小屋尾根方向へ続くハッキリした踏み跡に乗る※1。訝しみながらも、踏み跡から外れ窪を下降して大ダワ林道に戻った。&lt;br&gt;
② 近年までの地理院地図には、長沢谷左岸から長沢谷を渡り二軒小屋尾根に上がるルートが、現在より上を回るように描かれている。二軒小屋尾根を発つ標高も高いから、横に延びる道筋は（現在の）崩落地の上を通る。&lt;br&gt;
そもそも長沢谷への下降点が現在よりもずっと先で、対岸は踊窪（登山詳細図）付近と推測される。この点についても、3月に大ブナ別れから長沢谷下降点までたどったさい、現代の下降点を左下に見ながらまだ先に延びる道を見ている（※2の写真35）。&lt;/p&gt;
&lt;p&gt;小雲取谷出合いからの帰り道①、出会ったのはもしかしてこの経路②ではないか。&lt;br&gt;
今回も、疑問を解消するために実地に歩いてみた。&lt;br&gt;
撤収後にP1726まで上がっているのはトレーニングのためで、大ダワ林道とは関係ない。&lt;/p&gt;
&lt;hr&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;項目&lt;/th&gt;
&lt;th style="text-align: left"&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;記録日&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;2026年6月6日（日）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;天候&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;雨上がりで路面ウエットの晴れたり曇ったり、気温上がらず湿度高い、虫がわんさか湧いていた&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;パーティ&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;モンターニャ単独&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;アクセス&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;西東京バスで東日原バス停&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;行程&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;東日原バス停、日原林道、長沢谷下降点、長沢谷、踊窪、（古径）大ダワ道、二軒小屋尾根、（古径）大ダワ道、二軒小屋尾根、モミソの頭、P1726、二軒小屋尾根乗越し、長沢谷、日原林道、中日原バス停&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="コースタイム"&gt;コースタイム&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;08:13～東日原バス停スタート&lt;/li&gt;
&lt;li&gt;08:50～八丁橋～08:55&lt;/li&gt;
&lt;li&gt;09:59～長沢谷下降点～10:27&lt;/li&gt;
&lt;li&gt;/&lt;em&gt;林道上の踏み跡をたどる&lt;/em&gt;/&lt;/li&gt;
&lt;li&gt;10:58～林道に戻る&lt;/li&gt;
&lt;li&gt;11:12～ナギ谷への踏み跡&lt;/li&gt;
&lt;li&gt;11:20～ナギ谷右岸尾根～11:30&lt;/li&gt;
&lt;li&gt;11:47～踊窪～12:01&lt;/li&gt;
&lt;li&gt;13:00～二軒小屋尾根に上がる、co1280m～13:05&lt;/li&gt;
&lt;li&gt;13:19～（P1300真西のco1250m）～13:39&lt;/li&gt;
&lt;li&gt;13:44～（カジ小屋窪手前の窪）～13:50&lt;/li&gt;
&lt;li&gt;14:03～二軒小屋尾根&lt;/li&gt;
&lt;li&gt;14:48～P1726&lt;/li&gt;
&lt;li&gt;15:48～日原林道長沢谷下降点&lt;/li&gt;
&lt;li&gt;17:21～東日原バス停フィニッシュ&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="コースマップ"&gt;コースマップ&lt;/h3&gt;
&lt;link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /&gt;
&lt;style&gt;
.gpx-container {
width: 100%;
margin: 1.5rem 0;
border: 1px solid #ccc;
border-radius: 8px;
overflow: hidden;
background: #fff;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
font-family: sans-serif;
}
.gpx-map { height: 380px; width: 100%; }
.gpx-summary {
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
background: #f8f9fa;
padding: 8px 10px;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
font-size: 0.8rem;
color: #333;
overflow-x: auto;
white-space: nowrap;
}
.gpx-summary-item {
margin: 0 4px;
}
.gpx-summary-item strong {
color: #007bff;
font-size: 0.95rem;
margin-left: 2px;
}
.gpx-chart-wrapper {
height: 180px;
width: 100%;
padding: 10px;
background: #fafafa;
box-sizing: border-box;
}
.start-marker-icon, .goal-marker-icon {
background: none;
border: none;
font-weight: bold;
font-size: 11px;
color: #ffffff;
text-align: center;
line-height: 18px;
}
&lt;/style&gt;
&lt;div class="gpx-container"&gt;
&lt;div id="map-7291b016" class="gpx-map"&gt;&lt;/div&gt;
&lt;div id="summary-7291b016" class="gpx-summary"&gt;
&lt;div class="gpx-summary-item"&gt;総距離:&lt;strong id="sum-dist-7291b016"&gt;-&lt;/strong&gt; km&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;累積標高上り:&lt;strong id="sum-up-7291b016"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;累積標高下り:&lt;strong id="sum-down-7291b016"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;最高標高:&lt;strong id="sum-max-7291b016"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;div class="gpx-summary-item"&gt;最低標高:&lt;strong id="sum-min-7291b016"&gt;-&lt;/strong&gt; m&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gpx-chart-wrapper"&gt;
&lt;canvas id="chart-7291b016"&gt;&lt;/canvas&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js"&gt;&lt;/script&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/chart.js"&gt;&lt;/script&gt;
&lt;script&gt;
window.addEventListener('load', function() {
var gpxUrl = '\/oohc\/posts\/2026-06-06\/20260606_20260606.gpx';
var map = L.map('map-7291b016').setView([0, 0], 10);
L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution: '&lt;a href="https://maps.gsi.go.jp/development/ichiran.html" target="_blank"&gt;国土地理院&lt;/a&gt;',
maxZoom: 18
}).addTo(map);
L.control.scale({
imperial: false,
position: 'bottomleft'
}).addTo(map);
var hoverMarker = null;
var trackPoints = [];
var timeLabels = [];
var ctx = document.getElementById('chart-7291b016').getContext('2d');
var chart = new Chart(ctx, {
type: 'line',
data: {
datasets: [{
label: '標高 (m)',
data: [],
borderColor: '#007bff',
backgroundColor: 'rgba(0, 123, 255, 0.1)',
fill: true,
borderWidth: 1.5,
pointRadius: 0,
pointHoverRadius: 6,
tension: 0.1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
interaction: { mode: 'index', intersect: false },
plugins: {
legend: { display: false },
tooltip: {
callbacks: {
title: function(items) {
var index = items[0].dataIndex;
var timeStr = timeLabels[index] || '';
var distStr = items[0].raw.x.toFixed(2) + ' km';
return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;
},
label: function(item) {
return '標高: ' + item.raw.y + ' m';
}
}
}
},
scales: {
x: {
type: 'linear',
display: true,
title: { display: true, text: '距離 (km)', font: { size: 10 } },
ticks: {
font: { size: 10 }
},
grid: { color: 'rgba(0, 0, 0, 0.05)' }
},
y: {
display: true,
title: { display: true, text: '標高 (m)', font: { size: 10 } },
ticks: { font: { size: 10 } },
grid: { color: 'rgba(0, 0, 0, 0.05)' }
}
},
onHover: function(event, activeElements) {
if (activeElements &amp;&amp; activeElements.length &gt; 0) {
var index = activeElements[0].index;
updateHoverMarker(index);
}
}
}
});
function updateHoverMarker(index) {
var pt = trackPoints[index];
if (pt) {
if (!hoverMarker) {
hoverMarker = L.circleMarker([pt.lat, pt.lng], {
radius: 8,
fillColor: '#00ffff',
color: '#ffffff',
weight: 3,
opacity: 1,
fillOpacity: 1
}).addTo(map);
} else {
hoverMarker.setLatLng([pt.lat, pt.lng]);
}
}
}
function extractTrackData(layer) {
var pts = [];
var polylines = [];
if (typeof layer.getLatLngs === 'function') {
var latlngs = layer.getLatLngs();
var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;
flat.forEach(function(p) {
if (p &amp;&amp; typeof p.lat === 'number') {
pts.push({ lat: p.lat, lng: p.lng });
}
});
if (layer instanceof L.Polyline) {
polylines.push(layer);
}
} else if (typeof layer.eachLayer === 'function') {
layer.eachLayer(function(child) {
var res = extractTrackData(child);
pts = pts.concat(res.pts);
polylines = polylines.concat(res.polylines);
});
}
return { pts: pts, polylines: polylines };
}
fetch(gpxUrl)
.then(function(response) { return response.text(); })
.then(function(xmlText) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlText, "text/xml");
var trkpts = xmlDoc.getElementsByTagName("trkpt");
for (var i = 0; i &lt; trkpts.length; i++) {
var timeNode = trkpts[i].getElementsByTagName("time")[0];
if (timeNode) {
var dateObj = new Date(timeNode.textContent);
var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
timeLabels.push(timeStr);
} else {
timeLabels.push('');
}
}
})
.catch(function(err) {
console.error("GPX Time Parsing Error:", err);
});
new L.GPX(gpxUrl, {
async: true,
polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },
marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }
}).on('loaded', function(e) {
var gpx = e.target;
map.fitBounds(gpx.getBounds());
var totalDistMeters = gpx.get_distance();
var distKmNum = totalDistMeters / 1000;
var distKmStr = distKmNum.toFixed(2);
var maxEle = Math.round(gpx.get_elevation_max());
var minEle = Math.round(gpx.get_elevation_min());
var gainEle = Math.round(gpx.get_elevation_gain());
var lossEle = Math.round(gpx.get_elevation_loss());
document.getElementById('sum-dist-7291b016').innerText = distKmStr;
document.getElementById('sum-up-7291b016').innerText = gainEle;
document.getElementById('sum-down-7291b016').innerText = lossEle;
document.getElementById('sum-max-7291b016').innerText = maxEle;
document.getElementById('sum-min-7291b016').innerText = minEle;
var eleData = gpx.get_elevation_data();
var chartDataPoints = [];
var extracted = extractTrackData(gpx);
trackPoints = extracted.pts;
if (trackPoints.length &gt; 0) {
var startPt = trackPoints[0];
var endPt = trackPoints[trackPoints.length - 1];
L.circleMarker([startPt.lat, startPt.lng], {
radius: 9,
fillColor: '#28a745',
color: '#ffffff',
weight: 2,
opacity: 1,
fillOpacity: 0.9
}).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });
L.circleMarker([endPt.lat, endPt.lng], {
radius: 9,
fillColor: '#dc3545',
color: '#ffffff',
weight: 2,
opacity: 1,
fillOpacity: 0.9
}).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });
}
eleData.forEach(function(item) {
var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);
var ele = Math.round(item[1]);
chartDataPoints.push({
x: parseFloat(dist.toFixed(2)),
y: ele
});
});
var dynamicStepSize = 1.0;
if (distKmNum &lt;= 5) {
dynamicStepSize = 0.5;
} else if (distKmNum &lt;= 20) {
dynamicStepSize = 1.0;
} else if (distKmNum &lt;= 40) {
dynamicStepSize = 5.0;
} else {
dynamicStepSize = 10.0;
}
chart.options.scales.x.max = distKmNum;
var allowedTicks = [];
for (var v = 0; v &lt; distKmNum; v += dynamicStepSize) {
allowedTicks.push(parseFloat(v.toFixed(1)));
}
chart.options.scales.x.ticks.callback = function(value) {
for (var i = 0; i &lt; allowedTicks.length; i++) {
if (Math.abs(value - allowedTicks[i]) &lt; 0.01) {
return value + ' km';
}
}
return '';
};
chart.options.scales.x.afterBuildTicks = function(axis) {
axis.ticks = allowedTicks.map(function(val) {
return { value: val };
});
};
chart.data.datasets[0].data = chartDataPoints;
chart.update();
extracted.polylines.forEach(function(polyline) {
polyline.on('mousemove', function(ev) {
if (!trackPoints.length) return;
var mouseLatLng = ev.latlng;
var closestIndex = 0;
var minDist = Infinity;
for (var i = 0; i &lt; trackPoints.length; i++) {
var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));
if (d &lt; minDist) {
minDist = d;
closestIndex = i;
}
}
updateHoverMarker(closestIndex);
chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);
chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });
chart.update();
});
});
}).addTo(map);
});
&lt;/script&gt;
&lt;hr&gt;
&lt;h3 id="山行記録"&gt;山行記録&lt;/h3&gt;
&lt;p&gt;記入中&lt;/p&gt;</description></item></channel></rss>