From dcebcc6b1b5b03f7fd37864ded04fabdba0a0b57 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 4 Jan 2018 22:27:35 +0100 Subject: Initial draft. --- src/js/app/mapfactory.js | 26 ++++++++++++++++++++++++++ src/js/app/places.js | 16 ++++++++++++++++ src/js/app/position.js | 21 +++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 src/js/app/mapfactory.js create mode 100644 src/js/app/places.js create mode 100644 src/js/app/position.js (limited to 'src/js/app') diff --git a/src/js/app/mapfactory.js b/src/js/app/mapfactory.js new file mode 100644 index 0000000..8d8bb0e --- /dev/null +++ b/src/js/app/mapfactory.js @@ -0,0 +1,26 @@ +define(['leaflet'], function(L) { + // base config + var attribOSM = '© OpenStreetMap contributors', + OSMLayer = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: attribOSM + }), + scale = L.control.scale({ + imperial: false + }); + + return function(id, bounds) { + var map = L.map(id, { + layers: [OSMLayer] + }) + if (bounds) { + map.fitBounds(L.latLngBounds(bounds)); + } else { + map.fitWorld().zoomIn(); + } + map.attributionControl.setPrefix(false); + + scale.addTo(map); + + return map; + }; +}); diff --git a/src/js/app/places.js b/src/js/app/places.js new file mode 100644 index 0000000..9b915cb --- /dev/null +++ b/src/js/app/places.js @@ -0,0 +1,16 @@ +define(['leaflet'], function(L) { + + // GeoJSON feature grouping + function returnMarker(feature, latlng) { + return L.marker(latlng); + }; + + var place = L.geoJson([], { + pointToLayer: returnMarker + }); + + return function(data) { + place.addData(data); + return L.layerGroup().addLayer(place); + }; +}); diff --git a/src/js/app/position.js b/src/js/app/position.js new file mode 100644 index 0000000..0e9bfb2 --- /dev/null +++ b/src/js/app/position.js @@ -0,0 +1,21 @@ +define(['leaflet'], function(L) { + + // position popup + function round(n,d) { + return Math.round(Math.pow(10,d)*n)/Math.pow(10,d) + }; + function lngLatString(latLng) { + return round(latLng.lng,5) + ", " + round(latLng.lat,5) + }; + var popup = L.popup(); + + return function positionHook(map) { + function positionPopup(e) { + popup + .setLatLng(e.latlng) + .setContent("Position (long, lat):
" + lngLatString(e.latlng)) + .openOn(map); + } + map.on('contextmenu', positionPopup); + } +}); -- cgit v1.2.3