This demo shows Mapstraction's filtering mechanism to show and hide map markers which have a date and time-stamp associated with them. Drag and slide the markers below to see the demo in action.


JavaScript Demo Source: mxn-filter-markers.js
var mapstraction; function initialize(api_provider_id) { var coords; mapstraction = new mxn.Mapstraction('map', api_provider_id); coords = new mxn.LatLonPoint(51.38745, -0.50914); mapstraction.setCenterAndZoom(coords, 14); addMarkers(100); addSlider(); sliderChanged(slidervalues); }; function addMarkers(count) { var bounds = mapstraction.getBounds(); var sw = bounds.getSouthWest(); var ne = bounds.getNorthEast(); while (count--) { var ll = new mxn.LatLonPoint(sw.lat + ((ne.lat - sw.lat) * Math.random()), sw.lon + ((ne.lon - sw.lon) * Math.random())); var marker = new mxn.Marker(ll); var number = Math.round(86400000 * Math.random()); var d = new Date(); d.setTime(d.getTime() - (86400000 / 2) + number); var h = d.getHours(); if (h < 10) { h = "0" + h; } var m = d.getMinutes(); if (m < 10) { m = "0" + m; } var text = h + ':' + m; //var el = document.createElement('h1'); //el.appendChild( document.createTextNode(h + ':' + m)); marker.setInfoBubble(text); marker.setAttribute('date', d); mapstraction.addMarker(marker); }; }; function addSlider() { slidervalues = [0, 100]; sliderhandles = [$('handle1'), $('handle2')]; slider = new Control.Slider(sliderhandles, 'track', { range: $R(0, 100, false), step: 1, restricted: true, sliderValue: slidervalues, onChange: sliderChanged, onSlide: sliderChanged }); var d = new Date(); slider.timeMin = d.getTime() - (86400000 / 2); slider.timeMax = d.getTime() + (86400000 / 2); } function sliderChanged(offsets) { var min = new Date(slider.timeMin + (offsets[0] / 100) * (slider.timeMax - slider.timeMin)); var max = new Date(slider.timeMin + (offsets[1] / 100) * (slider.timeMax - slider.timeMin)); var tw = document.getElementById('timeWindow'); tw.innerHTML = min.toString() + " -> " + max.toString(); mapstraction.removeAllFilters(); mapstraction.addFilter('date', 'ge', min); mapstraction.addFilter('date', 'le', max); mapstraction.doFilter(); }