Adding elevation chart

This commit is contained in:
franzz committed 2019-02-14 22:59:32 +01:00
1 parent 34a7cf6b08
commit 299e4c8a54
14 files changed
+1000 -91

No files matched your search

+8 -15
View File
@@ -5,19 +5,12 @@ class Converter extends PhpObject {
const GPX_EXT = '.gpx';
const GEO_EXT = '.geojson';
/**
* Project to convert
* @var Project
*/
private $oProject;
public function __construct(&$oProject) {
public function __construct() {
parent::__construct(__CLASS__, Settings::DEBUG);
$this->oProject = &$oProject;
}
public function convertToGeoJson() {
$sFileName = pathinfo($this->oProject->getGeoFile(), PATHINFO_FILENAME);
public function convertToGeoJson($sGeoFile) {
$sFileName = pathinfo($sGeoFile, PATHINFO_FILENAME);
$sGpxFileName = $sFileName.self::GPX_EXT;
$sGeoJsonFileName = $sFileName.self::GEO_EXT;
@@ -70,7 +63,7 @@ class Gpx extends Geo {
$asTrack['points'][] = array(
'lon' => (float) $asPoint['lon'],
'lat' => (float) $asPoint['lat'],
//'ele' => (int) $asPoint->ele
'ele' => (int) $asPoint->ele
);
}
}
@@ -96,7 +89,7 @@ class GeoJson extends Geo {
}
private function getGeoJson() {
$asTracks = array();
$asTracks = array('features'=>array());
foreach($this->asTracks as $asTrackProps) {
switch($asTrackProps['color']) {
@@ -114,15 +107,15 @@ class GeoJson extends Geo {
'description' => $asTrackProps['desc']
),
'geometry' => array(
'type' => 'MultiLineString',
'type' => 'LineString',
'coordinates' => array()
)
);
foreach($asTrackProps['points'] as $asPoint) {
$asTrack['geometry']['coordinates'][0][] = array_values($asPoint);
$asTrack['geometry']['coordinates'][] = array_values($asPoint);
}
$asTracks[] = $asTrack;
$asTracks['features'][] = $asTrack;
}
return $asTracks;
+7 -1
View File
@@ -100,7 +100,13 @@ class Project extends PhpObject {
case 1: $asProject['mode'] = self::MODE_BLOG; break;
case 2: $asProject['mode'] = self::MODE_HISTO; break;
}
$asProject['geofile'] = Spot::addTimestampToFilePath(self::GEO_FOLDER.$asProject['geofile']);
$sGeoFile = self::GEO_FOLDER.$asProject['geofile'];
if(!file_exists($sGeoFile)) {
(new Converter())->convertToGeoJson($asProject['geofile']);
}
$asProject['geofile'] = Spot::addTimestampToFilePath($sGeoFile);
$asProject['codename'] = $sCodeName;
$asProject['timezone_desc'] = Spot::getTimeZoneDesc($asProject['timezone']);
}
+9 -4
View File
@@ -48,7 +48,8 @@ class Spot extends Main
$asClasses = array(
array('name'=>'project', 'project'=>true),
array('name'=>'picture', 'project'=>true),
array('name'=>'cacher', 'project'=>true)
array('name'=>'cacher', 'project'=>true),
array('name'=>'converter', 'project'=>true)
);
parent::__construct($oClassManagement, $sProcessPage, $asClasses);
@@ -140,6 +141,7 @@ class Spot extends Main
'index',
array(
'filepath_css' => self::addTimestampToFilePath('style/spot.css'),
'filepath_js_d3' => self::addTimestampToFilePath('script/d3.min.js'),
'filepath_js_leaflet' => self::addTimestampToFilePath('script/leaflet.min.js'),
'filepath_js_jquery' => self::addTimestampToFilePath('script/jquery.min.js'),
'filepath_js_jquery_mods' => self::addTimestampToFilePath('script/jquery.mods.js'),
@@ -436,6 +438,10 @@ class Spot extends Main
$sToken = Settings::IGN_FR_KEY;
$sReferer = 'https://www.visugpx.com/yfJDwfuTlf';
break;
case 'opentopomap':
$sPattern = 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png';
$asDomains = array('a', 'b', 'c');
break;
case 'static':
$sPattern = 'https://api.mapbox.com/v4/mapbox.satellite/url-https%3A%2F%2Fspot.lutran.fr%2Fimages%2Ffootprint_mapbox.png({x},{y})/{x},{y},{z}/400x300.png?access_token={token}';
$sToken = Settings::MAPBOX_KEY;
@@ -455,9 +461,8 @@ class Spot extends Main
}
public function convertGpxToGeoJson() {
$this->oClassManagement->incClass('converter', true);
$oConverter = new Converter($this->oProject);
return $oConverter->convertToGeoJson();
$oConverter = new Converter();
return $oConverter->convertToGeoJson($this->oProject->getGeoFile());
}
public static function DecToDMS($dValue, $sType='lat') {
+1
View File
@@ -5,6 +5,7 @@
<link type="image/x-icon" href="images/favicon.ico" rel="shortcut icon" />
<link type="image/png" href="images/favicon.png" rel="icon" sizes="32x32" />
<link type="text/css" href="[#]filepath_css[#]" rel="stylesheet" media="all" />
<script type="text/javascript" src="[#]filepath_js_d3[#]"></script>
<script type="text/javascript" src="[#]filepath_js_leaflet[#]"></script>
<script type="text/javascript" src="[#]filepath_js_jquery[#]"></script>
<script type="text/javascript" src="[#]filepath_js_jquery_mods[#]"></script>
+63 -60
View File
@@ -137,8 +137,7 @@ function initSpotMessages(aoMessages, aoTracks) {
//Tile layers
var oMapBoxSat = L.tileLayer(self.tmp('tile_api'), {id: 'mapbox.satellite', minZoom: 0, maxZoom: 19}),
oOpenTopoMap = L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', {id: 'OpenTopoMap', minZoom: 2, maxZoom: 19}),
//oMapBoxStreet = L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token='+self.vars('mapbox_key'), {id: 'mapbox.streets'}),
oOpenTopoMap = L.tileLayer(self.tmp('tile_api'), {id: 'opentopomap', minZoom: 2, maxZoom: 19}),
oIgnSpain = L.tileLayer(self.tmp('tile_api'), {id: 'ign.es', minZoom: 1, maxZoom: 20}),
oIgnFrance = L.tileLayer(self.tmp('tile_api'), {id: 'ign.fr', minZoom: 0, maxZoom: 18, tileSize: 256}),
oLinz = L.tileLayer(self.tmp('tile_api'), {id: 'linz', maxZoom: 17, continuousWorld: true, attribution: 'Sourced from LINZ. CC BY 4.0'});
@@ -151,12 +150,71 @@ function initSpotMessages(aoMessages, aoTracks) {
});
self.tmp('map', oMap);
//Controls: Legend
var oLegend = L.control({position: 'bottomleft'});
oLegend.onAdd = function(oMap) {return $('#legend').clone()[0];};
oLegend.addTo(oMap);
//Controls: Projects
var oProjects = L.control({position: 'bottomleft'});
oProjects.onAdd = function(oMap) {
var $Labels = $('<div>', {'class': 'leaflet-control-layers-base'});
$.each(self.vars('projects'), function(sCodeName, asProject){
var asRadioAttrs = {'type': 'radio', 'class': 'leaflet-control-layers-selector', 'name':'project', 'value': sCodeName};
if(asProject.id == self.vars(['project', 'id'])) asRadioAttrs.checked = 'checked';
var $Radio =$('<input>', asRadioAttrs).change(function(){
self.setHash(self.vars('page'), [$(this).val()]);
});
var $Label = $('<label>').append($('<div>')
.append($Radio)
.append($('<span>').text(' '+asProject.name))
);
$Labels.append($Label);
});
return $('<div>', {'class':'leaflet-control-layers leaflet-control leaflet-control-layers-expanded'}).append($('<section>').append($Labels))[0];
};
oProjects.addTo(oMap);
//Controls: Scale
oScale = L.control.scale({imperial: false, 'position':'bottomright'}).addTo(oMap);
//Controls: Elevation
var oElev = L.control.elevation({
collapsed: true,
position: "bottomright",
width: $('#messages').width() - $('#feed').outerWidth(true) - $('.leaflet-bottom.leaflet-left').outerWidth(true) + 4,
height: 125,
hoverNumber: {
decimalsX: 0, //distance (km)
decimalsY: 0 //elevation (m)
},
theme: 'spot-theme',
onExpand: function(){$('.leaflet-control-scale').hide();},
onCollapse: function(){$('.leaflet-control-scale').show();}
}).addTo(oMap);
//Controls: Tiles
L.control.layers(
{
'Satellite': oMapBoxSat,
'Open Topo Map': oOpenTopoMap,
'IGN (France)': oIgnFrance,
'IGN (Espagne)': oIgnSpain,
'LINZ (Nouvelle-Zélande)': oLinz
},
null,
{position: 'topleft'}
).addTo(oMap);
//Tracks, colors & popup
var oTracks = L.geoJson(aoTracks, {
style: function(oTrack) {
return self.tmp(['track-type-styles', oTrack.properties.type]);
},
onEachFeature: function (feature, oLayer) {
onEachFeature: function(feature, oLayer) {
var asProperties = feature.properties;
var $Tooltip = $('<div>', {'class':'track_tooltip'});
$('<p>', {'class':'name'}).addIcon('fa-track-'+asProperties.type, true).append(asProperties.name).appendTo($Tooltip);
@@ -171,6 +229,8 @@ function initSpotMessages(aoMessages, aoTracks) {
.on('mouseout', function(e) {
e.target.closePopup();
});
if(asProperties.type != 'hitchhiking') (oElev.addData.bind(oElev))(feature, oLayer);
}
}).addTo(oMap);
@@ -186,19 +246,6 @@ function initSpotMessages(aoMessages, aoTracks) {
}
else oMap.fitBounds(oTracks.getBounds(), {paddingTopLeft: L.point(5, 42), paddingBottomRight: L.point(self.tmp('feed_width')+5, 5)});
//Controls
L.control.layers(
{
'Satellite': oMapBoxSat,
'Open Topo Map': oOpenTopoMap,
'IGN (France)': oIgnFrance,
'IGN (Espagne)': oIgnSpain,
'LINZ (Nouvelle-Zélande)': oLinz
},
null,
{position: 'topleft'}
).addTo(oMap);
//Building messages
$.each(aoMessages, function(iKey, oMsg){
@@ -213,19 +260,6 @@ function initSpotMessages(aoMessages, aoTracks) {
})
}).addTo(oMap);
//Marker events
/*oMarker.on({
mouseover: function(){
this.openPopup();
},
mouseout: function(){
},
click: function(oPoint){
self.tmp('map').setOffsetView(self.tmp('map_offset'), oPoint.latlng, 15);
}
});*/
//Tooltip
$Tooltip = $('<div>', {'class':'info-window'})
.append($('<h1>')
@@ -258,37 +292,6 @@ function initSpotMessages(aoMessages, aoTracks) {
oSpot.tmp(['markers', oMsg.id_message], oMarker);
});
//Legend
var oLegend = L.control({position: 'bottomleft'});
oLegend.onAdd = function(oMap) {return $('#legend').clone()[0];};
oLegend.addTo(oMap);
//Projects
var oProjects = L.control({position: 'bottomleft'});
oProjects.onAdd = function(oMap) {
var $Labels = $('<div>', {'class': 'leaflet-control-layers-base'});
$.each(self.vars('projects'), function(sCodeName, asProject){
var asRadioAttrs = {'type': 'radio', 'class': 'leaflet-control-layers-selector', 'name':'project', 'value': sCodeName};
if(asProject.id == self.vars(['project', 'id'])) asRadioAttrs.checked = 'checked';
var $Radio =$('<input>', asRadioAttrs).change(function(){
self.setHash(self.vars('page'), [$(this).val()]);
});
var $Label = $('<label>').append($('<div>')
.append($Radio)
.append($('<span>').text(' '+asProject.name))
);
$Labels.append($Label);
});
return $('<div>', {'class':'leaflet-control-layers leaflet-control leaflet-control-layers-expanded'}).append($('<section>').append($Labels))[0];
};
oProjects.addTo(oMap);
//Scale
L.control.scale({imperial: false, 'position':'bottomright'}).addTo(oMap);
}
function getBoundsZoomLevel(bounds, mapDim) {
+2
View File
@@ -0,0 +1,2 @@
// https://d3js.org v5.9.1 Copyright 2019 Mike Bostock
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})}(this,function(t){"use strict";function n(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a<i;)isNaN(e=u(t[a]))||(f+=(r=e-c)*(e-(c+=r/++o)));else for(;++a<i;)isNaN(e=u(n(t[a],a,t)))||(f+=(r=e-c)*(e-(c+=r/++o)));if(o>1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a<o;)if(null!=(e=t[a])&&e>=e)for(r=i=e;++a<o;)null!=(e=t[a])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++a<o;)if(null!=(e=n(t[a],a,t))&&e>=e)for(r=i=e;++a<o;)null!=(e=n(t[a],a,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}var l=Array.prototype,h=l.slice,d=l.map;function p(t){return function(){return t}}function v(t){return t}function g(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}var y=Math.sqrt(50),_=Math.sqrt(10),b=Math.sqrt(2);function m(t,n,e){var r,i,o,a,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(a=x(t,n,e))||!isFinite(a))return[];if(a>0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u<i;)o[u]=(t+u)*a;else for(t=Math.floor(t*a),n=Math.ceil(n*a),o=new Array(i=Math.ceil(t-n+1));++u<i;)o[u]=(t-u)/a;return r&&o.reverse(),o}function x(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n<t?-i:i}function M(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function N(t,n,e){if(null==e&&(e=u),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function A(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r}function T(t){for(var n,e,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(e=new Array(a);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r}function k(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function E(t){return t.length}var C=Array.prototype.slice;function P(t){return t}var z=1,R=2,D=3,q=4,L=1e-6;function U(t){return"translate("+(t+.5)+",0)"}function O(t){return"translate(0,"+(t+.5)+")"}function B(){return!this.__axis}function Y(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c=t===z||t===q?-1:1,f=t===q||t===R?"x":"y",s=t===z||t===D?U:O;function l(l){var h=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,d=null==i?n.tickFormat?n.tickFormat.apply(n,e):P:i,p=Math.max(o,0)+u,v=n.range(),g=+v[0]+.5,y=+v[v.length-1]+.5,_=(n.bandwidth?function(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return+t(e)+n}}:function(t){return function(n){return+t(n)}})(n.copy()),b=l.selection?l.selection():l,m=b.selectAll(".domain").data([null]),x=b.selectAll(".tick").data(h,n).order(),w=x.exit(),M=x.enter().append("g").attr("class","tick"),N=x.select("line"),A=x.select("text");m=m.merge(m.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),x=x.merge(M),N=N.merge(M.append("line").attr("stroke","currentColor").attr(f+"2",c*o)),A=A.merge(M.append("text").attr("fill","currentColor").attr(f,c*p).attr("dy",t===z?"0em":t===D?"0.71em":"0.32em")),l!==b&&(m=m.transition(l),x=x.transition(l),N=N.transition(l),A=A.transition(l),w=w.transition(l).attr("opacity",L).attr("transform",function(t){return isFinite(t=_(t))?s(t):this.getAttribute("transform")}),M.attr("opacity",L).attr("transform",function(t){var n=this.parentNode.__axis;return s(n&&isFinite(n=n(t))?n:_(t))})),w.remove(),m.attr("d",t===q||t==R?a?"M"+c*a+","+g+"H0.5V"+y+"H"+c*a:"M0.5,"+g+"V"+y:a?"M"+g+","+c*a+"V0.5H"+y+"V"+c*a:"M"+g+",0.5H"+y),x.attr("opacity",1).attr("transform",function(t){return s(_(t))}),N.attr(f+"2",c*o),A.aLine truncated
+793
View File
@@ -3,3 +3,796 @@
* (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ei,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?ii(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ni,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-ri));return ri=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||ai!==m)return ai.call(window,e(t,i));t.call(i)}function g(t){t&&hi.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=oi(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:oi(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:oi(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function S(t,i,e,n){if(oi(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function Z(t,i,e,n){return new S(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Ji?"z":"x":""}return h||"M0 0"}function B(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function A(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function I(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(te,n,!1):"touchmove"===i?t.removeEventListener(ie,n,!1):"touchend"===i&&(t.removeEventListener(ee,n,!1),t.removeEventListener(ne,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(oe.indexOf(t.target.tagName)<0))return;Pt(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(te,o,!1),re||(document.documentElement.addEventListener(te,R,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,D,!0),document.documentElement.addEventListener(ne,D,!0),re=!0)}function R(t){se[t.pointerId]=t,ae++}function N(t){se[t.pointerId]&&(se[t.pointerId]=t)}function D(t){delete se[t.pointerId],ae--}function j(t,i){t.touches=[];for(var e in se)t.touches.push(se[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(ie,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ee,n,!1),t.addEventListener(ne,n,!1)}function F(t,i,e){function n(t){var i;if(Vi){if(!bi||"mouse"===t.pointerType)return;i=ae}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:Line truncated
/* leaflet.elevation - https://github.com/HostedDinner/Leaflet.Elevation/tree/master/dist */
L.Control.Elevation = L.Control.extend({
options: {
position: "topright",
theme: "lime-theme",
width: 600,
height: 175,
margins: {
top: 10,
right: 20,
bottom: 30,
left: 60
},
useHeightIndicator: true,
interpolation: d3.curveLinear,
hoverNumber: {
decimalsX: 3,
decimalsY: 0,
formatter: undefined
},
xTicks: undefined,
yTicks: undefined,
collapsed: false,
yAxisMin: undefined,
yAxisMax: undefined,
forceAxisBounds: false,
controlButton: {
iconCssClass: "elevation-toggle-icon",
title: "Elevation"
},
imperial: false,
onExpand: function() {},
onCollapse: function() {},
},
__mileFactor: 0.621371,
__footFactor: 3.28084,
onRemove: function(map) {
this._container = null;
},
onAdd: function(map) {
this._map = map;
var opts = this.options;
var margin = opts.margins;
opts.xTicks = opts.xTicks || Math.round(this._width() / 75);
opts.yTicks = opts.yTicks || Math.round(this._height() / 30);
opts.hoverNumber.formatter = opts.hoverNumber.formatter || this._formatter;
var x = this._x = d3.scaleLinear()
.range([0, this._width()]);
var y = this._y = d3.scaleLinear()
.range([this._height(), 0]);
var area = this._area = d3.area()
.curve(opts.interpolation)
.x(function(d) {
var xDiagCoord = x(d.dist);
d.xDiagCoord = xDiagCoord;
return xDiagCoord;
})
.y0(this._height())
.y1(function(d) {
return y(d.altitude);
});
var container = this._container = L.DomUtil.create("div", "elevation");
L.DomUtil.addClass(container, opts.theme); //append theme to control
this._initToggle();
var cont = d3.select(container);
cont.attr("width", opts.width);
var svg = cont.append("svg");
svg.attr("width", opts.width)
.attr("class", "background")
.attr("height", opts.height)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var line = d3.line();
line = line
.x(function(d) {
return d3.mouse(svg.select("g"))[0];
})
.y(function(d) {
return this._height();
});
var g = d3.select(this._container).select("svg").select("g");
this._areapath = g.append("path")
.attr("class", "area");
var background = this._background = g.append("rect")
.attr("width", this._width())
.attr("height", this._height())
.style("fill", "none")
.style("stroke", "none")
.style("pointer-events", "all");
if (L.Browser.touch) {
background.on("touchmove.drag", this._dragHandler.bind(this)).
on("touchstart.drag", this._dragStartHandler.bind(this)).
on("touchstart.focus", this._mousemoveHandler.bind(this));
L.DomEvent.on(this._container, 'touchend', this._dragEndHandler, this);
}
background.on("mousemove.focus", this._mousemoveHandler.bind(this)).
on("mouseout.focus", this._mouseoutHandler.bind(this)).
on("mousedown.drag", this._dragStartHandler.bind(this)).
on("mousemove.drag", this._dragHandler.bind(this));
L.DomEvent.on(this._container, 'mouseup', this._dragEndHandler, this);
this._xaxisgraphicnode = g.append("g");
this._yaxisgraphicnode = g.append("g");
this._appendXaxis(this._xaxisgraphicnode);
this._appendYaxis(this._yaxisgraphicnode);
var focusG = this._focusG = g.append("g");
this._mousefocus = focusG.append('svg:line')
.attr('class', 'mouse-focus-line')
.attr('x2', '0')
.attr('y2', '0')
.attr('x1', '0')
.attr('y1', '0');
this._focuslabelX = focusG.append("svg:text")
.style("pointer-events", "none")
.attr("class", "mouse-focus-label-x");
this._focuslabelY = focusG.append("svg:text")
.style("pointer-events", "none")
.attr("class", "mouse-focus-label-y");
if (this._data) {
this._applyData();
}
return container;
},
_dragHandler: function() {
//we don´t want map events to occur here
d3.event.preventDefault();
d3.event.stopPropagation();
this._gotDragged = true;
this._drawDragRectangle();
},
/*
* Draws the currently dragged rectabgle over the chart.
*/
_drawDragRectangle: function() {
if (!this._dragStartCoords) {
return;
}
var dragEndCoords = this._dragCurrentCoords = d3.mouse(this._background.node());
var x1 = Math.min(this._dragStartCoords[0], dragEndCoords[0]),
x2 = Math.max(this._dragStartCoords[0], dragEndCoords[0]);
if (!this._dragRectangle && !this._dragRectangleG) {
var g = d3.select(this._container).select("svg").select("g");
this._dragRectangleG = g.append("g");
this._dragRectangle = this._dragRectangleG.append("rect")
.attr("width", x2 - x1)
.attr("height", this._height())
.attr("x", x1)
.attr('class', 'mouse-drag')
.style("pointer-events", "none");
} else {
this._dragRectangle.attr("width", x2 - x1)
.attr("x", x1);
}
},
/*
* Removes the drag rectangle and zoms back to the total extent of the data.
*/
_resetDrag: function() {
if (this._dragRectangleG) {
this._dragRectangleG.remove();
this._dragRectangleG = null;
this._dragRectangle = null;
this._hidePositionMarker();
this._map.fitBounds(this._fullExtent);
}
},
/*
* Handles end of dragg operations. Zooms the map to the selected items extent.
*/
_dragEndHandler: function() {
if (!this._dragStartCoords || !this._gotDragged) {
this._dragStartCoords = null;
this._gotDragged = false;
this._resetDrag();
return;
}
this._hidePositionMarker();
var item1 = this._findItemForX(this._dragStartCoords[0]),
item2 = this._findItemForX(this._dragCurrentCoords[0]);
this._fitSection(item1, item2);
this._dragStartCoords = null;
this._gotDragged = false;
},
_dragStartHandler: function() {
d3.event.preventDefault();
d3.event.stopPropagation();
this._gotDragged = false;
this._dragStartCoords = d3.mouse(this._background.node());
},
/*
* Finds a data entry for a given x-coordinate of the diagram
*/
_findItemForX: function(x) {
var bisect = d3.bisector(function(d) {
return d.dist;
}).left;
var xinvert = this._x.invert(x);
return bisect(this._data, xinvert);
},
/*
* Finds an item with the smallest delta in distance to the given latlng coords
*/
_findItemForLatLng: function(latlng) {
var result = null,
d = Infinity;
this._data.forEach(function(item) {
var dist = latlng.distanceTo(item.latlng);
if (dist < d) {
d = dist;
result = item;
}
});
return result;
},
/** Make the map fit the route section between given indexes. */
_fitSection: function(index1, index2) {
var start = Math.min(index1, index2),
end = Math.max(index1, index2);
var ext = this._calculateFullExtent(this._data.slice(start, end));
this._map.fitBounds(ext);
},
_initToggle: function() {
/* inspired by L.Control.Layers */
var container = this._container;
//Makes this work on IE10 Touch devices by stopping it from firing a mouseout event when the touch is released
container.setAttribute('aria-haspopup', true);
L.DomEvent
.disableClickPropagation(container);
//.disableScrollPropagation(container);
if (L.Browser.touch) {
L.DomEvent.on(container, 'click', L.DomEvent.stopPropagation);
}
if (this.options.collapsed) {
this._collapse();
if (!L.Browser.android) {
L.DomEvent
.on(container, 'mouseover', this._expand, this)
.on(container, 'mouseout', this._collapse, this);
}
var link = this._button = L.DomUtil.create('a', "elevation-toggle " + this.options.controlButton
.iconCssClass, container);
link.href = '#';
link.title = this.options.controlButton.title;
if (L.Browser.touch) {
L.DomEvent
.on(link, 'click', L.DomEvent.stop)
.on(link, 'click', this._expand, this);
}
L.DomEvent.on(link, 'focus', this._expand, this);
this._map.on('click', this._collapse, this);
// TODO keyboard accessibility
}
},
_expand: function() {
this._container.className = this._container.className.replace(' elevation-collapsed', '');
this.options.onExpand();
},
_collapse: function() {
L.DomUtil.addClass(this._container, 'elevation-collapsed');
this.options.onCollapse();
},
_width: function() {
var opts = this.options;
return opts.width - opts.margins.left - opts.margins.right;
},
_height: function() {
var opts = this.options;
return opts.height - opts.margins.top - opts.margins.bottom;
},
/*
* Fromatting funciton using the given decimals and seperator
*/
_formatter: function(num, dec, sep) {
var res;
if (dec === 0) {
res = Math.round(num) + "";
} else {
res = L.Util.formatNum(num, dec) + "";
}
var numbers = res.split(".");
if (numbers[1]) {
var d = dec - numbers[1].length;
for (; d > 0; d--) {
numbers[1] += "0";
}
res = numbers.join(sep || ".");
}
return res;
},
_appendYaxis: function(y) {
var opts = this.options;
if (opts.imperial) {
y.attr("class", "y axis")
.call(d3.axisLeft()
.scale(this._y)
.ticks(this.options.yTicks))
.append("text")
.attr("x", -37)
.attr("y", 3)
.style("text-anchor", "end")
.style("fill", "currentColor")
.text("ft");
} else {
y.attr("class", "y axis")
.call(d3.axisLeft()
.scale(this._y)
.ticks(this.options.yTicks))
.append("text")
.attr("x", -10)
.attr("y", 3)
.style("text-anchor", "end")
.style("fill", "currentColor")
.text("m");
}
},
_appendXaxis: function(x) {
var opts = this.options;
if (opts.imperial) {
x.attr("class", "x axis")
.attr("transform", "translate(0," + this._height() + ")")
.call(d3.axisBottom()
.scale(this._x)
.ticks(this.options.xTicks))
.append("text")
.attr("x", this._width() + 10)
.attr("y", 15)
.style("text-anchor", "end")
.style("fill", "currentColor")
.text("mi");
} else {
x.attr("class", "x axis")
.attr("transform", "translate(0," + this._height() + ")")
.call(d3.axisBottom()
.scale(this._x)
.ticks(this.options.xTicks))
.append("text")
.attr("x", this._width() + 10)
.attr("y", 15)
.style("text-anchor", "end")
.style("fill", "currentColor")
.text("km");
}
},
_updateAxis: function() {
this._xaxisgraphicnode.selectAll("g").remove();
this._xaxisgraphicnode.selectAll("path").remove();
this._xaxisgraphicnode.selectAll("text").remove();
this._yaxisgraphicnode.selectAll("g").remove();
this._yaxisgraphicnode.selectAll("path").remove();
this._yaxisgraphicnode.selectAll("text").remove();
this._appendXaxis(this._xaxisgraphicnode);
this._appendYaxis(this._yaxisgraphicnode);
},
_mouseoutHandler: function() {
this._hidePositionMarker();
},
/*
* Hides the position-/heigth indication marker drawn onto the map
*/
_hidePositionMarker: function() {
if (this._marker) {
this._map.removeLayer(this._marker);
this._marker = null;
}
if (this._mouseHeightFocus) {
this._mouseHeightFocus.style("visibility", "hidden");
this._mouseHeightFocusLabel.style("visibility", "hidden");
}
if (this._pointG) {
this._pointG.style("visibility", "hidden");
}
this._focusG.style("visibility", "hidden");
},
/*
* Handles the moueseover the chart and displays distance and altitude level
*/
_mousemoveHandler: function(d, i, ctx) {
if (!this._data || this._data.length === 0) {
return;
}
var coords = d3.mouse(this._background.node());
var opts = this.options;
var item = this._data[this._findItemForX(coords[0])];
if(!item) return;
var alt = item.altitude,
dist = item.dist,
ll = item.latlng,
numY = opts.hoverNumber.formatter(alt, opts.hoverNumber.decimalsY),
numX = opts.hoverNumber.formatter(dist, opts.hoverNumber.decimalsX);
this._showDiagramIndicator(item, coords[0]);
var layerpoint = this._map.latLngToLayerPoint(ll);
//if we use a height indicator we create one with SVG
//otherwise we show a marker
if (opts.useHeightIndicator) {
if (!this._mouseHeightFocus) {
var heightG = d3.select(".leaflet-overlay-pane svg")
.append("g");
this._mouseHeightFocus = heightG.append('svg:line')
.attr("class", opts.theme + " height-focus line")
.attr("x2", 0)
.attr("y2", 0)
.attr("x1", 0)
.attr("y1", 0);
var pointG = this._pointG = heightG.append("g");
pointG.append("svg:circle")
.attr("r", 4)
.attr("cx", 0)
.attr("cy", 0)
.attr("class", opts.theme + " height-focus circle-lower");
this._mouseHeightFocusLabel = heightG.append("svg:text")
.attr("class", opts.theme + " height-focus-label")
.style("pointer-events", "none");
}
var normalizedAlt = this._height() / this._maxElevation * alt;
var normalizedY = layerpoint.y - normalizedAlt;
var compY = Math.max(3 - normalizedAlt, 0) + 3;
this._mouseHeightFocus.attr("x1", layerpoint.x)
.attr("x2", layerpoint.x)
.attr("y1", layerpoint.y)
.attr("y2", normalizedY)
.style("visibility", "visible");
this._pointG.attr("transform", "translate(" + layerpoint.x + "," + layerpoint.y + ")")
.style("visibility", "visible");
if (opts.imperial) {
this._mouseHeightFocusLabel.attr("x", layerpoint.x)
.attr("y", normalizedY - compY)
.text(numY + " ft")
.style("visibility", "visible");
} else {
this._mouseHeightFocusLabel.attr("x", layerpoint.x)
.attr("y", normalizedY - compY)
.text(numY + " m")
.style("visibility", "visible");
}
} else {
if (!this._marker) {
this._marker = new L.Marker(ll).addTo(this._map);
} else {
this._marker.setLatLng(ll);
}
}
},
/*
* Parsing of GeoJSON data lines and their elevation in z-coordinate
*/
_addGeoJSONData: function(coords) {
var opts = this.options;
if (coords) {
var data = this._data || [];
var dist = this._dist || 0;
var ele = this._maxElevation || 0;
for (var i = 0; i < coords.length; i++) {
var s = new L.LatLng(coords[i][1], coords[i][0]);
var e = new L.LatLng(coords[i ? i - 1 : 0][1], coords[i ? i - 1 : 0][0]);
var newdist = opts.imperial ? s.distanceTo(e) * this.__mileFactor : s.distanceTo(e);
dist = dist + Math.round(newdist / 1000 * 100000) / 100000;
ele = ele < coords[i][2] ? coords[i][2] : ele;
data.push({
dist: dist,
altitude: opts.imperial ? coords[i][2] * this.__footFactor : coords[i][2],
x: coords[i][0],
y: coords[i][1],
latlng: s
});
}
this._dist = dist;
this._data = data;
ele = opts.imperial ? ele * this.__footFactor : ele;
this._maxElevation = ele;
}
},
/*
* Parsing function for GPX data as used by https://github.com/mpetazzoni/leaflet-gpx
*/
_addGPXdata: function(coords) {
var opts = this.options;
if (coords) {
var data = this._data || [];
var dist = this._dist || 0;
var ele = this._maxElevation || 0;
for (var i = 0; i < coords.length; i++) {
var s = coords[i];
var e = coords[i ? i - 1 : 0];
var newdist = opts.imperial ? s.distanceTo(e) * this.__mileFactor : s.distanceTo(e);
dist = dist + Math.round(newdist / 1000 * 100000) / 100000;
ele = ele < s.meta.ele ? s.meta.ele : ele;
data.push({
dist: dist,
altitude: opts.imperial ? s.meta.ele * this.__footFactor : s.meta.ele,
x: s.lng,
y: s.lat,
latlng: s
});
}
this._dist = dist;
this._data = data;
ele = opts.imperial ? ele * this.__footFactor : ele;
this._maxElevation = ele;
}
},
_addData: function(d) {
var geom = d && d.geometry && d.geometry;
var i;
if (geom) {
switch (geom.type) {
case 'LineString':
this._addGeoJSONData(geom.coordinates);
break;
case 'MultiLineString':
for (i = 0; i < geom.coordinates.length; i++) {
this._addGeoJSONData(geom.coordinates[i]);
}
break;
default:
throw new Error('Invalid GeoJSON object.');
}
}
var feat = d && d.type === "FeatureCollection";
if (feat) {
for (i = 0; i < d.features.length; i++) {
this._addData(d.features[i]);
}
}
if (d && d._latlngs) {
this._addGPXdata(d._latlngs);
}
},
/*
* Calculates the full extent of the data array
*/
_calculateFullExtent: function(data) {
if (!data || data.length < 1) {
throw new Error("no data in parameters");
}
var ext = new L.latLngBounds(data[0].latlng, data[0].latlng);
data.forEach(function(item) {
ext.extend(item.latlng);
});
return ext;
},
/*
* Add data to the diagram either from GPX or GeoJSON and
* update the axis domain and data
*/
addData: function(d, layer) {
this._addData(d);
if (this._container) {
this._applyData();
}
if (layer === null && d.on) {
layer = d;
}
if (layer) {
layer.on("mousemove", this._handleLayerMouseOver.bind(this));
}
},
/*
* Handles mouseover events of the data layers on the map.
*/
_handleLayerMouseOver: function(evt) {
if (!this._data || this._data.length === 0) {
return;
}
var latlng = evt.latlng;
var item = this._findItemForLatLng(latlng);
if (item) {
var x = item.xDiagCoord;
this._showDiagramIndicator(item, x);
}
},
_showDiagramIndicator: function(item, xCoordinate) {
var opts = this.options;
this._focusG.style("visibility", "visible");
this._mousefocus.attr('x1', xCoordinate)
.attr('y1', 3)
.attr('x2', xCoordinate)
.attr('y2', this._height())
.classed('hidden', false);
var alt = item.altitude,
dist = item.dist,
ll = item.latlng,
numY = opts.hoverNumber.formatter(alt, opts.hoverNumber.decimalsY),
numX = opts.hoverNumber.formatter(dist, opts.hoverNumber.decimalsX);
if (opts.imperial) {
this._focuslabelX.attr("x", xCoordinate)
.text(numY + " ft");
this._focuslabelY.attr("y", this._height() - 5)
.attr("x", xCoordinate + 3)
.text(numX + " mi");
} else {
this._focuslabelX.attr("x", xCoordinate)
.text(numY + " m");
this._focuslabelY.attr("y", this._height() - 5)
.attr("x", xCoordinate + 3)
.text(numX + " km");
}
},
_applyData: function() {
var xdomain = d3.extent(this._data, function(d) {
return d.dist;
});
var ydomain = d3.extent(this._data, function(d) {
return d.altitude;
});
var opts = this.options;
if (opts.yAxisMin !== undefined && (opts.yAxisMin < ydomain[0] || opts.forceAxisBounds)) {
ydomain[0] = opts.yAxisMin;
}
if (opts.yAxisMax !== undefined && (opts.yAxisMax > ydomain[1] || opts.forceAxisBounds)) {
ydomain[1] = opts.yAxisMax;
}
this._x.domain(xdomain);
this._y.domain(ydomain);
this._areapath.datum(this._data)
.attr("d", this._area);
this._updateAxis();
this._fullExtent = this._calculateFullExtent(this._data);
},
/*
* Reset data
*/
_clearData: function() {
this._data = null;
this._dist = null;
this._maxElevation = null;
},
/*
* Reset data and display
*/
clear: function() {
this._clearData();
if (!this._areapath) {
return;
}
// workaround for 'Error: Problem parsing d=""' in Webkit when empty data
// https://groups.google.com/d/msg/d3-js/7rFxpXKXFhI/HzIO_NPeDuMJ
//this._areapath.datum(this._data).attr("d", this._area);
this._areapath.attr("d", "M0 0");
this._x.domain([0, 1]);
this._y.domain([0, 1]);
this._updateAxis();
},
hide: function() {
this._container.style.display = "none";
},
show: function() {
this._container.style.display = "block";
}
});
L.control.elevation = function(options) {
return new L.Control.Elevation(options);
};
+13
View File
@@ -28,6 +28,19 @@
@include animate(fadeIn 0.8s infinite alternate);
}
@mixin rounded($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
-o-border-radius: $radius;
border-radius: $radius;
}
@mixin drop-shadow($opacity) {
filter: drop-shadow( -1px 1px 1px rgba(0, 0, 0, $opacity));
-webkit-filter: drop-shadow( -1px 1px 1px rgba(0, 0, 0, $opacity));
}
/* Fonts */
@import url('https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin-ext');
+12
View File
@@ -20,6 +20,16 @@ $fa-css-prefix: fa;
}
}
.control-icon {
font-size: 28px;
text-align: center;
line-height: 44px;
text-decoration: none;
color: #999;
background: none;
@extend .fa;
}
.#{$fa-css-prefix}-post:before { content: fa-content($fa-var-comment); }
.#{$fa-css-prefix}-poster:before { content: fa-content($fa-var-comment-edit); }
.#{$fa-css-prefix}-message:before { content: fa-content($fa-var-compass); }
@@ -33,3 +43,5 @@ $fa-css-prefix: fa;
.#{$fa-css-prefix}-track-main:before { content: fa-content($fa-var-hiking); }
.#{$fa-css-prefix}-track-hitchhiking:before { content: fa-content($fa-var-car-side); }
.#{$fa-css-prefix}-layers:before { content: fa-content($fa-var-layer-group); }
.#{$fa-css-prefix}-elevation:before { content: fa-content($fa-var-chart-area); }
+86
View File
@@ -0,0 +1,86 @@
$theme : "spot-theme";
$base-color : #CCC;
$highlight-color : #FFF;
$background : rgba($base-color, 0.2);
$drag-color : rgba($highlight-color, 0.2);
$axis-color : darken($base-color,20%);
$stroke-color : darken($base-color,40%);
$stroke-width-mouse-focus : 1;
$stroke-width-height-focus: 2;
$stroke-width-axis : 2;
.#{$theme}.leaflet-control.elevation {
.background {
//background-color: $background;
//@include rounded(3px);
margin: 6px 0 -12px;
}
.axis path,
.axis line {
fill: none;
stroke: $axis-color;
stroke-width: $stroke-width-axis;
}
//.mouse-focus-label-y,
.mouse-focus-label-x {
text-anchor: middle;
}
.mouse-drag{
fill: $drag-color;
}
.elevation-toggle {
cursor: pointer;
width: 44px;
height: 44px;
color: #CCC;
text-shadow: 0px 1px 1px rgba(0,0,0,0.8);
}
.area {
fill: $base-color;
@include drop-shadow(0.6);
}
.mouse-focus-line {
pointer-events: none;
stroke-width: $stroke-width-mouse-focus;
stroke: $stroke-color;
}
}
.#{$theme}.leaflet-control.elevation-collapsed {
.background {
display: none;
}
.elevation-toggle {
@extend .control-icon;
@extend .fa-elevation;
}
}
.#{$theme}.height-focus{
stroke: $base-color;
fill: $base-color;
@include drop-shadow(0.6);
}
.#{$theme}.height-focus.line{
pointer-events: none;
stroke-width: $stroke-width-height-focus;
@include drop-shadow(0.6);
}
.#{$theme}.height-focus-label{
text-anchor: middle;
fill: $base-color;
@include drop-shadow(0.6);
}
.#{$theme}.height-focus.circle-lower {
}
+2 -8
View File
@@ -68,15 +68,9 @@
/* Replace Layers image with font awesome icon */
.leaflet-control-layers-toggle {
font-size: 28px;
text-align: center;
line-height: 44px;
text-decoration: none;
color: #999;
text-shadow: 0px 1px 1px rgba(0,0,0,0.8);
background: none;
@extend .fa;
@extend .control-icon;
@extend .fa-layers;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.8);
}
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
+1 -1
View File
@@ -1,2 +1,2 @@
@import url("https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin-ext");@font-face{font-family:'Font Awesome 5 Pro';font-style:normal;font-weight:900;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,#messages .leaflet-control-layers-toggle,.fas,.fa,#messages .leaflet-control-layers-toggle,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw,.info-window i{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,#messages .fa-pull-left.leaflet-control-layers-toggle,.fas.fa-pull-left,.fa-pull-left.fa,#messages .fa-pull-left.leaflet-control-layers-toggle,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,#messages .fa-pull-right.leaflet-control-layers-toggle,.fas.fa-pull-right,.fa-pull-right.fa,#messages .fa-pull-right.leaflet-control-layers-toggle,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa.push,#messages .push.leaflet-control-layers-toggle{margin-right:0.5em}.fa-post:before{content:"\f075"}.fa-poster:before{content:"\f4ae"}.fa-message:before{content:"\f14e"}.fa-map:before{content:"\f59f"}.fa-time:before{content:"\f017"}.fa-picture:before{content:"\f332"}.fa-send:before{content:"\f1d8"}.fa-spinner:before{content:"\f110"}.fa-tasks:before{content:"\f0ae"}.fa-track-off-track:before{content:"\f6ec"}.fa-track-main:before{content:"\f6ec"}.fa-track-hitchhiking:before{content:"\f5e4"}.fa-layers:before,#messages .leaflet-control-layers-toggle:before{content:"\f5fd"}html.lb-disable-scrolling{overflow:hidden;position:fixed;height:100vh;width:100vw}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:black;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:0.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:normal}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid white}.lightbox a img{border:none}.lb-outerContainer{position:relative;*zoom:1;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:white}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:none;background-image:url("data:image/gif;base64,R0lGOLine truncated
@import url("https://fonts.googleapis.com/css?family=Ubuntu:400,700&subset=latin-ext");@font-face{font-family:'Font Awesome 5 Pro';font-style:normal;font-weight:900;src:url("fa/fonts/fa-solid-900.eot");src:url("fa/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("fa/fonts/fa-solid-900.woff2") format("woff2"),url("fa/fonts/fa-solid-900.woff") format("woff"),url("fa/fonts/fa-solid-900.ttf") format("truetype"),url("fa/fonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#messages .leaflet-control-layers-toggle,.fas,.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#messages .leaflet-control-layers-toggle{font-family:'Font Awesome 5 Pro';font-weight:900}.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#messages .leaflet-control-layers-toggle,.fas,.fa,.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#messages .leaflet-control-layers-toggle,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw,.info-window i{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fa-pull-left.control-icon,.spot-theme.leaflet-control.elevation-collapsed .fa-pull-left.elevation-toggle,#messages .fa-pull-left.leaflet-control-layers-toggle,.fas.fa-pull-left,.fa-pull-left.fa,.fa-pull-left.control-icon,.spot-theme.leaflet-control.elevation-collapsed .fa-pull-left.elevation-toggle,#messages .fa-pull-left.leaflet-control-layers-toggle,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fa-pull-right.control-icon,.spot-theme.leaflet-control.elevation-collapsed .fa-pull-right.elevation-toggle,#messages .fa-pull-right.leaflet-control-layers-toggle,.fas.fa-pull-right,.fa-pull-right.fa,.fa-pull-right.control-icon,.spot-theme.leaflet-control.elevation-collapsed .fa-pull-right.elevation-toggle,#messages .fa-pull-right.leaflet-control-layers-toggle,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1, -1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa.push,.push.control-icon,.spot-theme.leaflet-control.elevation-collapsed .push.elevation-toggle,#messages .push.leaflet-control-layers-toggle{margin-right:0.5em}.control-icon,.spot-theme.leaflet-control.elevation-collapsed .elevation-toggle,#messages .leaflet-control-layers-toggle{font-size:28px;text-align:center;line-height:44px;text-decoration:none;color:#999;background:none}.fa-post:before{content:"\f075"}.fa-poster:before{content:"\f4ae"}.fa-message:before{content:"\f14e"}.fa-map:before{content:"\f59f"}.fa-time:before{content:"\f017"}.fa-picture:before{content:"\f332"}.fa-send:before{content:"\f1d8"}.fa-spinner:before{content:"\f110"}.fa-tasks:before{content:"\f0ae"}.fa-track-off-track:before{content:"\f6ec"}.fa-track-main:before{content:"\f6ec"}.fa-track-hitchhiking:before{content:"\f5e4"}.fa-layers:before,#messages .leaflet-control-layers-toggle:before{content:"\f5fd"}.fa-elevation:befoLine truncated
/*# sourceMappingURL=spot.css.map */
+2 -2
View File
@@ -1,7 +1,7 @@
{
"version": 3,
"mappings": "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 truncated
"sources": ["_common.scss","fa/solid.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_variables.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","_lightbox.scss","_simplebar.scss","_leaflet.scss","_mask_project.scss","_mask_upload.scss"],
"mappings": "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 truncated
"sources": ["_common.scss","fa/solid.scss","fa/_core.scss","fa/_larger.scss","fa/_fixed-width.scss","fa/_variables.scss","fa/_list.scss","fa/_bordered-pulled.scss","fa/_animated.scss","fa/_rotated-flipped.scss","fa/_mixins.scss","fa/_stacked.scss","_fa.scss","_lightbox.scss","_simplebar.scss","_leaflet.scss","_leaflet_elevation.scss","_mask_project.scss","_mask_upload.scss"],
"names": [],
"file": "spot.css"
}
+1
View File
@@ -6,6 +6,7 @@
/* Site Global CSS */
@import 'common';
@import 'leaflet_elevation';
/* Pages Specific CSS (masks) */
@import 'mask_project';