Mapa
Z Endor Revived Wiki
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/> <script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
<style> .leaflet-container {
height: 100%; width: 100%; max-width: 100%; max-height: 100%;
} </style>
<script src="https://wiki.endor-revived.com/resources/custom/mapa.js"></script>
<script>
const yx = L.latLng;
function xy(x, y) { if (Array.isArray(x)) { return yx(x[1], x[0]); } return yx(y, x); }
function xyEndor(x, y) { return yx(4096 - y, x); }
function createMarkers(L, markers, type, color) { const group = []; markers.forEach(marker => { let newMarker; if(type === 'circle') { newMaker = L.circleMarker(xyEndor(marker.coords.x, marker.coords.y), { title: marker.name + (' (X: ' + marker.coords.x + ' Y: ' + marker.coords.y + ')' ), color: color, radius: marker.radius ?? 5 }).bindPopup(marker.name + (' (X: ' + marker.coords.x + ' Y: ' + marker.coords.y + ')' )); } else { const options = { color: color, title: marker.name + (' (X: ' + marker.coords.x + ' Y: ' + marker.coords.y + ')' ), }; if(marker.icon) { options.icon = L.icon({ iconUrl: `img/icons/${marker.icon}.png`, iconSize: [31, 31], iconAnchor: [16, 16], popupAnchor: [0, -16] }); } newMaker = L.marker(xyEndor(marker.coords.x, marker.coords.y), options) .bindPopup((marker.desc ?? marker.name) + ' (X: ' + marker.coords.x + ' Y: ' + marker.coords.y + ')'); } group.push(newMaker); }); return L.layerGroup(group); }
const citiesLGroup = createMarkers(L, cities, 'marker'); const questsLGroup = createMarkers(L, quests, 'marker'); const wildernessLGroup = createMarkers(L, wildersnessSpawns, 'circle', 'cyan'); const banksHealersGroup = createMarkers(L, banksHealers, 'marker'); const guildsGroup = createMarkers(L, guilds, 'marker'); const placesGroup = createMarkers(L, places, 'marker'); const merchantsGroup = createMarkers(L, merchants, 'marker'); const travelersGroup = createMarkers(L, travelers, 'marker'); const dungeonsGroup = createMarkers(L, dungeons, 'marker'); const dungeons15Group = createMarkers(L, dungeons15, 'marker'); const dungeons20Group = createMarkers(L, dungeons20, 'marker'); const dungeons25Group = createMarkers(L, dungeons25, 'marker');
const map = L.map('map', { crs: L.CRS.Simple, minZoom: -2, layers: [ citiesLGroup, wildernessLGroup, banksHealersGroup, guildsGroup, placesGroup, merchantsGroup, travelersGroup, dungeonsGroup, dungeons15Group, dungeons20Group, dungeons25Group, questsLGroup ] });
const bounds = [xy(0, 0), xy(7168, 4096)]; const image = L.imageOverlay('img/map.png', bounds).addTo(map);
L.control.layers({},{ "Banks & Healers": banksHealersGroup, "Cities": citiesLGroup, "Classmasters": guildsGroup, "Dungeons (low)": dungeonsGroup, "Dungeons (15+)": dungeons15Group, "Dungeons (20+)": dungeons20Group, "Dungeons (25+)": dungeons25Group, "Merchants": merchantsGroup, "Other": placesGroup,
"Quests": questsLGroup,
"Travelers": travelersGroup, "Wilderness": wildernessLGroup }).addTo(map);
map.setView(xy(3000, 2048), -1);
</script>