The application will show places visited by a person or vehicle over several days or weeks, down to the street level, on a map. There will be a clickable calendar, which shows the various days of the month, and a horizontal slider which lets you view different times of the day. If the user slides the slider to the left (AM) then they will see the places visited early in the morning, if they slide to the right (PM) they will see places visited closer to the end of the day and towards midnight. They can click any individual place (marker) and see details on the right (more information) which is loaded from the server as HTML.
The user can also switch between different map providers (Google, Yahoo, Microsoft, Openstreetmap etc) to get the best map for the location the user is viewing.
**DETAILED DESCRIPTION - must read**
Each place/sample marker will be specified using latitude and longitude coordinates, as well as a RADIUS (**accuracy measured in metres**). The makes each coordinate at a specific time a **CIRCLE**. The circles should be transparent overlays on the map. The maximum circle size is about 5km, typical circle size is 200 metres and smallest is 0 (a dot, or precise point).
Wherever possible the **location should be reverse-geocoded** (translated into an address) from the coordinates, using reverse-geocode services from providers such as Google, Yahoo etc. If one provider is unable to reverse-geocode, the next will be tried until a provider succeeds or all fail. This can be done at the server before the map loads, but you will need to provide the code for it.
From a user experience, as the user slides the slider to the right **new circles will appear like bubbles**. The old ones will fade and disappear ("burst"). The new ones will be strong coloured and the *most recent* will be a special colour or shape to show it is "current". There will only be a few circles/bubbles visible at any time (e.g. five). There should be an option (tickbox) to **join the circles up with lines**/routes or leave them unjoined.
The data provided from the server: each location sample is at a specific date, at a specific time of the day, with a specific sample ID number, a longitude, a latitude, an accuracy (in metres or kilometres) and (if available) the reverse-geocoded address. The time between samples may vary. For example they may be minutes apart at one time of the day, and several hours apart at another.
The map should allow the user to zoom in and out at any stage, but as the slider moves, the map should zoom in and out to fit those samples in.
When the user clicks on a specific sample (bubble/marker/circle), the script should call the server with the sample ID number and load some detail to display in a <div> panel on the page. This can be done from the server on click.