LeafletTimedimension example with geojson GeometryCollection
by Biel Frontera
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css">
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<link rel="stylesheet" href="https://rawgit.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.control.min.css">
<script src="https://rawgit.com/nezasa/iso8601-js-period/master/iso8601.min.js"></script>
<script src="https://rawgit.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.src.withlog.js"></script>
<div id="map" style="width: 800px; height: 400px; margin: 0 auto"></div>
JavaScript
L.TimeDimension.Layer.GeoJson.GeometryCollection = L.TimeDimension.Layer.GeoJson.extend({
// Do not modify features. Just return the feature if it intersects
// the time interval
_getFeatureBetweenDates: function(feature, minTime, maxTime) {
var featureStringTimes = this._getFeatureTimes(feature);
if (featureStringTimes.length == 0) {
return feature;
}
var featureTimes = [];
for (var i = 0, l = featureStringTimes.length; i < l; i++) {
var time = featureStringTimes[i]
if (typeof time == 'string' || time instanceof String) {
time = Date.parse(time.trim());
}
featureTimes.push(time);
}
if (featureTimes[0] > maxTime || featureTimes[l - 1] < minTime) {
return null;
}
return feature;
},
});
L.timeDimension.layer.geoJson.geometryCollection = function(layer, options) {
return new L.TimeDimension.Layer.GeoJson.GeometryCollection(layer, options);
};
function getCommonBaseLayers(map){
var osmLayer = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
});
var bathymetryLayer = L.tileLayer.wms("http://ows.emodnet-bathymetry.eu/wms", {
layers: 'emodnet:mean_atlas_land',
format: 'image/png',
transparent: true,
attribution: "EMODnet Bathymetry",
opacity: 0.8
});
var coastlinesLayer = L.tileLayer.wms("http://ows.emodnet-bathymetry.eu/wms", {
layers: 'coastlines',
format: 'image/png',
transparent: true,
attribution: "EMODnet Bathymetry",
opacity: 0.8
});
var bathymetryGroupLayer = L.layerGroup([bathymetryLayer, coastlinesLayer]);
bathymetryGroupLayer.addTo(map);
return {
"EMODnet Bathymetry": bathymetryGroupLayer,
"OSM": osmLayer
};
}
var map = L.map('map',...