「Widget:Custom map」の版間の差分
提供:メタファー リファンタジオ 攻略Wiki
ヘイグ運営用アカウント (トーク | 投稿記録) 編集の要約なし |
ヘイグ運営用アカウント (トーク | 投稿記録) 編集の要約なし |
||
25行目: | 25行目: | ||
var drawControl; | var drawControl; | ||
var editMode = false; | var editMode = false; | ||
// APIベースURLを定数として定義 | // APIベースURLを定数として定義 | ||
const API_BASE_URL = | const API_BASE_URL = Object.freeze('https://prd-h1g-elb-2067013247.ap-northeast-1.elb.amazonaws.com/metaphor_refantazio'); | ||
// 定数の保護 | |||
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() { | ||
// ページ離脱時のクリーンアップ処理を追加 | |||
window.addEventListener('beforeunload', () => { | |||
cleanupMap(); | |||
cleanupLocalStorage(); | |||
cleanupSessionCookies(); | |||
}); | }); | ||
function | setTimeout(function() { | ||
map.invalidateSize(); | |||
getMwToken() | |||
.then(function(token) { | |||
console.log('Initial token obtained'); | |||
loadPinsFromWikiPage(token); | |||
}) | |||
.catch(function(error) { | |||
console.error("Failed to get initial token:", error); | |||
alert('データの読み込みに失敗しました。ページを再読み込みしてください。'); | |||
}); | |||
}, 500); | |||
} | |||
}); | }); | ||
</script> | </script> | ||
</includeonly> | </includeonly> |