// 現在位置取得時の処理
function onLocationFound(e) {
  // 取得した位置情報を確認
  console.log("位置情報: ", e);

  // 緯度と経度を安全に取得
  const lat = e.latlng?.lat;
  const lng = e.latlng?.lng;

  // 緯度経度が取得できなければエラーを表示
  if (lat === undefined || lng === undefined) {
    console.error("位置情報が取得できませんでした。");
    return;
  }

  // マーカーとサークルを初期化または更新
  if (userMarker) {
    userMarker.setLatLng([lat, lng]);
    userCircle.setLatLng([lat, lng]);
  } else {
    userMarker = L.marker([lat, lng]).addTo(map).bindPopup("あなたの位置");
    userCircle = L.circle([lat, lng], { radius: 0.05, color: 'transparent' }).addTo(map);
  }

  // マップを現在位置に移動
  map.setView([lat, lng], 15);
}

// 現在位置取得失敗時の処理
function onLocationError(e) {
  console.error("位置情報を取得できませんでした: ", e.message);
  alert("位置情報を取得できませんでした: " + e.message);
}

// 現在位置の取得を開始
map.locate({ watch: true, setView: true, maxZoom: 16 });
map.on('locationfound', onLocationFound);
map.on('locationerror', onLocationError);
