Newer
Older
test2 / app.js
let map;
let itinerary = [];

function initMap() {
    map = L.map('map').setView([35.6895, 139.6917], 13);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

    map.on('click', function(e) {
        let marker = L.marker(e.latlng).addTo(map);
        addLocationToItinerary(e.latlng);
    });
}

function addLocationToItinerary(latlng) {
    let item = {
        lat: latlng.lat.toFixed(4),
        lng: latlng.lng.toFixed(4),
        date: '',
        time: '',
        memo: ''
    };
    itinerary.push(item);
    updateItineraryDisplay();
}

function updateItineraryDisplay() {
    let itineraryList = document.getElementById('itinerary');
    itineraryList.innerHTML = '';
    itinerary.forEach((item, index) => {
        let li = document.createElement('li');
        li.textContent = `地点: ${item.lat}, ${item.lng}`;
        if (item.date) li.textContent += ` - ${item.date}`;
        if (item.time) li.textContent += ` ${item.time}`;
        if (item.memo) li.textContent += ` - ${item.memo}`;
        
        let editButton = document.createElement('button');
        editButton.textContent = '編集';
        editButton.onclick = () => editItineraryItem(index);
        li.appendChild(editButton);
        
        itineraryList.appendChild(li);
    });
}

function editItineraryItem(index) {
    let item = itinerary[index];
    item.date = prompt('日付を入力してください:', item.date);
    item.time = prompt('時間を入力してください:', item.time);
    item.memo = prompt('メモを入力してください:', item.memo);
    updateItineraryDisplay();
}

document.getElementById('save-itinerary').addEventListener('click', function() {
    localStorage.setItem('itinerary', JSON.stringify(itinerary));
    alert('日程を保存しました');
});

document.getElementById('load-itinerary').addEventListener('click', function() {
    let savedItinerary = localStorage.getItem('itinerary');
    if (savedItinerary) {
        itinerary = JSON.parse(savedItinerary);
        updateItineraryDisplay();
        alert('日程を読み込みました');
    } else {
        alert('保存された日程がありません');
    }
});

window.onload = initMap;
Service Worker (service-worker.js)
javascript
const CACHE_NAME = 'trip-planner-v1';
const urlsToCache = [
  '/',
  '/index.html',
  '/styles.css',
  '/app.js',
  '/icon.png'
];

self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        if (response) {
          return response;
        }
        return fetch(event.request);
      }
    )
  );
});