「Widget:Custom map」の版間の差分

提供:メタファー リファンタジオ 攻略Wiki
移動先:案内検索
編集の要約なし
編集の要約なし
25行目: 25行目:
     var drawControl;
     var drawControl;
     var editMode = false;
     var editMode = false;
     // APIベースURLを定数として定義
     // APIベースURLを定数として定義
     const API_BASE_URL = location.origin.includes('prd-h1g-elb')
     const API_BASE_URL = Object.freeze('https://prd-h1g-elb-2067013247.ap-northeast-1.elb.amazonaws.com/metaphor_refantazio');
    ? 'https://prd-h1g-elb-2067013247.ap-northeast-1.elb.amazonaws.com/metaphor_refantazio'
    : 'https://default.api.url';
      
      
    // 定数の保護
    Object.defineProperty(window, 'API_BASE_URL', {
        value: API_BASE_URL,
        writable: false,
        configurable: false
    });
     window.savePopupContent = savePopupContent;
     window.savePopupContent = savePopupContent;
      
      
47行目: 51行目:
     );
     );
      
      
    // マップ初期化前のクリーンアップ
    cleanupMap();
    cleanupLocalStorage();
    cleanupSessionCookies();
     map = L.map('map', {
     map = L.map('map', {
       crs: L.CRS.Simple,
       crs: L.CRS.Simple,
117行目: 126行目:
         }
         }
     });
     });
    // クリーンアップ関数群を追加
function cleanupMap() {
    if (map) {
        map.eachLayer((layer) => {
            map.removeLayer(layer);
        });
       
        for (let i in map._controlCorners) {
            map._controlCorners[i].innerHTML = '';
        }
       
        if (drawnItems) {
            drawnItems.clearLayers();
        }
       
        map.off();
       
        $('.leaflet-popup-content').each(function() {
            if ($(this).data('lightGallery')) {
                $(this).data('lightGallery').destroy(true);
            }
        });
       
        $('.lg-container').remove();
    }
}
function cleanupLocalStorage() {
    Object.keys(localStorage).forEach(key => {
        if (key.includes('MediaWikiModuleStore')) {
            localStorage.removeItem(key);
        }
    });
}
function cleanupSessionCookies() {
    document.cookie.split(';').forEach(cookie => {
        const name = cookie.split('=')[0].trim();
        if (name.includes('mwuser-sessionId')) {
            document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
        }
    });
}
      
      
     //////////////////権限を確認
     //////////////////権限を確認
772行目: 825行目:
      
      
     ////////////////////////////////////////////////////
     ////////////////////////////////////////////////////
    // ページ読み込み時にデータを読み込む
     $(document).ready(function() {
     $(document).ready(function() {
        setTimeout(function() {
    // ページ離脱時のクリーンアップ処理を追加
            map.invalidateSize();
    window.addEventListener('beforeunload', () => {
            // 初期読み込み時にトークンを取得してからデータを読み込む
        cleanupMap();
            getMwToken()
        cleanupLocalStorage();
                .then(function(token) {
         cleanupSessionCookies();
                    console.log('Initial token obtained');
                    loadPinsFromWikiPage(token);
                })
                .catch(function(error) {
                    console.error("Failed to get initial token:", error);
                    alert('データの読み込みに失敗しました。ページを再読み込みしてください。');
                });
         }, 500);
     });
     });
   
////////////////////////////////////////////////////
    // マップの初期化
    $(document).ready(function() {
    if (map) {
        map.off();
        map.remove();
    }
    $('.lg-container').remove(); // LightGalleryもクリーンアップ
    initMap();  // マップの再初期化
});


function initMap() {
    setTimeout(function() {
    map = L.map('map', { /* 初期設定 */ });
        map.invalidateSize();
    drawnItems = new L.FeatureGroup();
        getMwToken()
    map.addLayer(drawnItems);
            .then(function(token) {
 
                console.log('Initial token obtained');
    map.on('unload', function() {
                loadPinsFromWikiPage(token);
        drawnItems.clearLayers();
            })
        $('.lg-container').remove();
            .catch(function(error) {
    });
                console.error("Failed to get initial token:", error);
 
                alert('データの読み込みに失敗しました。ページを再読み込みしてください。');
    // その他の初期設定
            });
    loadPinsFromWikiPage();
     }, 500);
}
 
    window.addEventListener('beforeunload', function() {
    if (map) {
        map.off();
        map.remove();
    }
    localStorage.removeItem('MediaWikiModuleStore'); // LocalStorageのクリーンアップ
     document.cookie = "rootwikimwuser-sessionId=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
});
});
     </script>
     </script>
      
      
     </includeonly>
     </includeonly>

2024年11月10日 (日) 17:29時点における版