map: add coordinates picker

This commit is contained in:
Jörg Deckert 2015-11-09 10:01:20 +01:00 committed by PetaByteBoy
parent 9215387fbe
commit f9e8c72508
2 changed files with 69 additions and 0 deletions

View file

@ -68,6 +68,46 @@ define(["map/clientlayer", "map/labelslayer",
} }
}) })
var CoordsPickerButton = L.Control.extend({
options: {
position: "bottomright"
},
active: false,
button: undefined,
initialize: function (f, options) {
L.Util.setOptions(this, options)
this.f = f
},
onAdd: function () {
var button = L.DomUtil.create("button", "coord-picker")
button.textContent = ""
L.DomEvent.disableClickPropagation(button)
L.DomEvent.addListener(button, "click", this.onClick, this)
this.button = button
return button
},
update: function() {
this.button.classList.toggle("active", this.active)
},
set: function(v) {
this.active = v
this.update()
},
onClick: function () {
this.f(!this.active)
}
})
function mkMarker(dict, iconFunc, router) { function mkMarker(dict, iconFunc, router) {
return function (d) { return function (d) {
var m = L.circleMarker([d.nodeinfo.location.latitude, d.nodeinfo.location.longitude], iconFunc(d)) var m = L.circleMarker([d.nodeinfo.location.latitude, d.nodeinfo.location.longitude], iconFunc(d))
@ -152,6 +192,13 @@ define(["map/clientlayer", "map/labelslayer",
}) })
} }
var showCoordsPickerButton = new CoordsPickerButton(function (d) {
if (d)
enableCoords()
else
disableCoords()
})
function saveView() { function saveView() {
savedView = {center: map.getCenter(), savedView = {center: map.getCenter(),
zoom: map.getZoom()} zoom: map.getZoom()}
@ -171,6 +218,23 @@ define(["map/clientlayer", "map/labelslayer",
locateUserButton.set(false) locateUserButton.set(false)
} }
function enableCoords() {
map.getContainer().classList.add("pick-coordinates")
map.on("click", showCoordinates)
showCoordsPickerButton.set(true)
}
function disableCoords() {
map.getContainer().classList.remove("pick-coordinates")
map.off("click", showCoordinates)
showCoordsPickerButton.set(false)
}
function showCoordinates(e) {
window.prompt("Koordinaten (Lat, Lng)", e.latlng.lat.toFixed(6) + ", " + e.latlng.lng.toFixed(6))
disableCoords()
}
function locationFound(e) { function locationFound(e) {
if (!userLocation) if (!userLocation)
userLocation = new LocationMarker(e.latlng).addTo(map) userLocation = new LocationMarker(e.latlng).addTo(map)
@ -228,6 +292,7 @@ define(["map/clientlayer", "map/labelslayer",
map.on("dragend", saveView) map.on("dragend", saveView)
addButton(locateUserButton) addButton(locateUserButton)
addButton(showCoordsPickerButton)
addButton(new AddLayerButton(function () { addButton(new AddLayerButton(function () {
/*eslint no-alert:0*/ /*eslint no-alert:0*/

View file

@ -2,6 +2,10 @@
paint-order: stroke; paint-order: stroke;
} }
.pick-coordinates {
cursor: crosshair;
}
.map { .map {
width: 100%; width: 100%;
height: 100%; height: 100%;