diff --git a/htdocs/index.html b/htdocs/index.html index f2e332f..857476c 100644 --- a/htdocs/index.html +++ b/htdocs/index.html @@ -1,36 +1,33 @@ - - - LinuxWorks Minetest Map (unofficial) - - - - - - - - - - + + LinuxWorks Minetest Map (unofficial) + + + + + + + + -
- - +
+ + diff --git a/htdocs/mapscript.js b/htdocs/mapscript.js index 8ec6a0b..c8959ab 100644 --- a/htdocs/mapscript.js +++ b/htdocs/mapscript.js @@ -1,126 +1,131 @@ // Projection fix from: https://gis.stackexchange.com/questions/200865/leaflet-crs-simple-custom-scale -var factorx = 1/256 * 4; +var factorx = 1 / 256 * 4; var factory = factorx; var originx = 7000; var originy = 7000; var zoom_level_real = 6; L.CRS.pr = L.extend({}, L.CRS.Simple, { - projection: L.Projection.LonLat, - transformation: new L.Transformation(factorx, factorx * originx, -factory, factory * originy), - - scale: function(zoom) { - return Math.pow(2, zoom); - }, + projection: L.Projection.LonLat, + transformation: new L.Transformation(factorx,factorx * originx,-factory,factory * originy), - zoom: function(scale) { - return Math.log(scale) / Math.LN2; - }, + scale: function(zoom) { + return Math.pow(2, zoom); + }, - distance: function(latlng1, latlng2) { - var dx = latlng2.lng - latlng1.lng, - dy = latlng2.lat - latlng1.lat; - - return Math.sqrt(dx * dx + dy * dy); - }, - infinite: true + zoom: function(scale) { + return Math.log(scale) / Math.LN2; + }, + + distance: function(latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng + , dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + infinite: true }); // Init map var mymap = L.map('mapid', { - crs: L.CRS.pr + crs: L.CRS.pr }).setView([0, 0], 6); var mapheight = 16384; var mapwidth = mapheight; var sw = mymap.unproject([0, 0], zoom_level_real); var ne = mymap.unproject([mapwidth, mapheight], zoom_level_real); -var layerbounds = new L.LatLngBounds(sw, ne); +var layerbounds = new L.LatLngBounds(sw,ne); var layers = L.control.layers({}, {}).addTo(mymap); function load_svg(name, url, active=1) { - var xhttp_ps = new XMLHttpRequest(); - xhttp_ps.onreadystatechange = function() { - if (this.readyState == 4) { - if (this.status == 200) { - var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); - svgElement.setAttribute('viewBox', "0 0 16384 16384"); - svgElement.innerHTML = xhttp_ps.responseText; - var svgElementBounds = [ [ 0, 0 ], [ 1000, 1000 ] ]; - var overlay = L.svgOverlay(svgElement, svgElementBounds); - layers.addOverlay(overlay, name); - if (active) - overlay.addTo(mymap); - return overlay; - } else { - alert("Error: Could not load SVG map layer (" + name + ")"); - } + var xhttp_ps = new XMLHttpRequest(); + xhttp_ps.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) { + var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); + svgElement.setAttribute('viewBox', "0 0 16384 16384"); + svgElement.innerHTML = xhttp_ps.responseText; + var svgElementBounds = [[0, 0], [1000, 1000]]; + var overlay = L.svgOverlay(svgElement, svgElementBounds); + layers.addOverlay(overlay, name); + if (active) + overlay.addTo(mymap); + return overlay; + } else { + alert("Error: Could not load SVG map layer (" + name + ")"); + } + } } - }; - xhttp_ps.open("GET", url, true); - xhttp_ps.send(); + ; + xhttp_ps.open("GET", url, true); + xhttp_ps.send(); } function load_tiles(name, id) { - var satellite = L.tileLayer('https://notsyncing.net/maps.linux-forks.de/tiles/?id={id}&z={z}&x={x}&y={y}', { - maxZoom: 8, - maxNativeZoom: 6, - minNativeZoom: 0, - minZoom: 0, - noWrap: true, - attribution: 'Map data © Linux-Forks, ' + - 'All rights reserved, ', - id: id, - tileSize: 256, - zoomOffset: 0, - opacity: 1.0, - bounds: layerbounds - }); - layers.addBaseLayer(satellite, name); - return satellite; + var satellite = L.tileLayer('https://notsyncing.net/maps.linux-forks.de/tiles/?id={id}&z={z}&x={x}&y={y}', { + maxZoom: 8, + maxNativeZoom: 6, + minNativeZoom: 0, + minZoom: 0, + noWrap: true, + attribution: 'Map data © Linux-Forks, ' + 'All rights reserved, ', + id: id, + tileSize: 256, + zoomOffset: 0, + opacity: 1.0, + bounds: layerbounds + }); + layers.addBaseLayer(satellite, name); + return satellite; } - - -function load_geojson(name, url, iconname, iconcolor,active=1) { - var xhttp_ps = new XMLHttpRequest(); - xhttp_ps.onreadystatechange = function() { - if (this.readyState == 4) { - if (this.status == 200) { - var geojson = L.geoJSON(JSON.parse(xhttp_ps.responseText), { - onEachFeature: function (feature, layer) { - label = String(feature.properties.name) - layer.bindPopup( - '

'+feature.properties.name+' ('+feature.geometry.coordinates+')

'+ - '

' + - '

'+feature.properties.description+'

' - ); - layer.bindTooltip(label, {permanent: true, direction: "center", className: "city-names"}).openTooltip(); - }, - pointToLayer: function(feature,latlng){ - label = String(feature.properties.name) - return new L.marker(latlng, {icon: L.AwesomeMarkers.icon({ - icon: iconname, - markerColor: iconcolor - })}).bindTooltip(label, {permanent: false, direction: "center", opacity: 0.7}).openTooltip(); - } - }); - layers.addOverlay(geojson, name); - if (active) - geojson.addTo(mymap); - return geojson; - } else { - alert("Error: Could not load geojson map layer (" + name + ")."); - } +function load_geojson(name, url, iconname, iconcolor, active=1) { + var xhttp_ps = new XMLHttpRequest(); + xhttp_ps.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) { + var geojson = L.geoJSON(JSON.parse(xhttp_ps.responseText), { + onEachFeature: function(feature, layer) { + label = String(feature.properties.name) + layer.bindPopup('

' + feature.properties.name + ' (' + feature.geometry.coordinates + ')

' + '

' + '

' + feature.properties.description + '

'); + layer.bindTooltip(label, { + permanent: true, + direction: "center", + className: "city-names" + }).openTooltip(); + }, + pointToLayer: function(feature, latlng) { + label = String(feature.properties.name) + return new L.marker(latlng,{ + icon: L.AwesomeMarkers.icon({ + icon: iconname, + markerColor: iconcolor + }) + }).bindTooltip(label, { + permanent: false, + direction: "center", + opacity: 0.7 + }).openTooltip(); + } + }); + layers.addOverlay(geojson, name); + if (active) + geojson.addTo(mymap); + return geojson; + } else { + alert("Error: Could not load geojson map layer (" + name + ")."); + } + } } - }; - xhttp_ps.open("GET", url, true); - xhttp_ps.send(); + ; + xhttp_ps.open("GET", url, true); + xhttp_ps.send(); } -load_tiles("Satellite (2020-04-09)", 'world-2020-04-09').addTo(mymap); +load_tiles("Satellite (2020-04-09)", 'world-2020-04-09').addTo(mymap); load_tiles("Satellite (2019-05-04, wrong coords)", 'world-2019-05-04'); //load_svg("Test", "./overlay.svg", 0); @@ -140,15 +145,12 @@ var popup = L.popup(); L.AwesomeMarkers.Icon.prototype.options.prefix = 'fa'; var baseballIcon = L.AwesomeMarkers.icon({ - icon: 'coffee', - markerColor: 'red' + icon: 'coffee', + markerColor: 'red' }); function onMapClick(e) { - popup - .setLatLng(e.latlng) - .setContent("You clicked the map at " + e.latlng.toString()) - .openOn(mymap); + popup.setLatLng(e.latlng).setContent("You clicked the map at " + e.latlng.toString()).openOn(mymap); } mymap.on('click', onMapClick);