diff --git a/public/static/css/map_editor.css b/public/static/css/map_editor.css
index 59f2315..26a1b83 100644
--- a/public/static/css/map_editor.css
+++ b/public/static/css/map_editor.css
@@ -7,6 +7,10 @@
z-index: 1;
}
+#jumpForm {
+ display: inline;
+}
+
/* modify the cursor for the Leaflet map */
.leaflet-container {
cursor: crosshair;
diff --git a/public/static/js/map_editor.js b/public/static/js/map_editor.js
index 10901f2..9dfe4af 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)
= $mapName ?>
+
+
+