diff --git a/public/static/js/map_editor.js b/public/static/js/map_editor.js index 10901f2..097b0d8 100644 --- a/public/static/js/map_editor.js +++ b/public/static/js/map_editor.js @@ -310,6 +310,21 @@ var placeId = addedPlaces[i].id; places[tempId].id = placeId; } + }, + + // TODO: check whether marker is already existing on the map for the coordinates + // or alternatively block saving for matching coordinates + placeMarker: function (latlng) { + var marker = L.marker(latlng, { + icon: IconCollection.iconBlue, + zIndexOffset: 2000 + }) + .addTo(MapEditor.map) + .on('click', function () { + MapEditor.select(this); + }); + + MapEditor.select(marker); } }; @@ -340,6 +355,32 @@ } else { return { ppi: 72, tileSize: 512, zoomOffset: -1, minZoom: 2, maxZoom: 20 }; } + }, + + extractCoordinates: function (coordinatesStr) { + var coordinates = { valid: false, latlng: { lat: 0., lng: 0. } }; + var delimiters = [',', ' ', ';']; + + coordinatesStr = coordinatesStr.trim(); + if (coordinatesStr.length == 0) { + return coordinates; + } + + for (var delimiter of delimiters) { + if (coordinatesStr.indexOf(delimiter) != -1) { + + var coordinatesArr = coordinatesStr.split(delimiter); + coordinates.latlng.lat = parseFloat(coordinatesArr[0]); + coordinates.latlng.lng = parseFloat(coordinatesArr[1]); + + if (!isNaN(coordinates.latlng.lat) && !isNaN(coordinates.latlng.lng)) { + coordinates.valid = true; + return coordinates; + } + } + } + + return coordinates; } }; @@ -348,16 +389,7 @@ }); MapEditor.map.on('click', function (e) { - var marker = L.marker(e.latlng, { - icon: IconCollection.iconBlue, - zIndexOffset: 2000 - }) - .addTo(MapEditor.map) - .on('click', function () { - MapEditor.select(this); - }); - - MapEditor.select(marker); + MapEditor.placeMarker(e.latlng); }); var highResData = Util.getHighResData(); @@ -440,4 +472,31 @@ document.getElementById('deleteButton').onclick = function () { MapEditor.deletePlace(); }; + + document.getElementById('jumpButton').onclick = function (e) { + var coordinatesStr = document.getElementById("jumpCoordinates").value; + var coordinates = Util.extractCoordinates(coordinatesStr); + + if (coordinates.valid) { + MapEditor.placeMarker(coordinates.latlng); + } + }; + + document.getElementById('jumpCoordinates').onkeyup = function (e) { + var coordinatesStr = document.getElementById("jumpCoordinates").value; + var coordinates = Util.extractCoordinates(coordinatesStr); + var jumpButton = document.getElementById("jumpButton"); + + if (coordinates.valid) { + jumpButton.disabled = false; + + if (e.key == 'Enter') { + MapEditor.placeMarker(coordinates.latlng); + } + } + else { + jumpButton.disabled = true; + } + }; + })(); diff --git a/views/admin/map_editor.php b/views/admin/map_editor.php index b8d3d83..c6de87b 100644 --- a/views/admin/map_editor.php +++ b/views/admin/map_editor.php @@ -10,8 +10,12 @@ @extends(templates/layout_full) -@section(subheader) +@section(subheader) + + +