From 8fdac69818277635abf59538e0a6c2c6122bbb98 Mon Sep 17 00:00:00 2001 From: Matt Caywood Date: Fri, 3 Feb 2012 01:57:09 -0500 Subject: [PATCH] Track "current location" and show as a blue dot. Addresses #49. The blue dot won't dynamically update, but I prefer it to the flag. Current location is also necessary to address #74. --- .../static/images/ledlightblue_16px.png | Bin 0 -> 1639 bytes .../static/images/ledlightblue_48px.png | Bin 0 -> 3507 bytes tnm/client/static/tnm.js | 6 ++++- tnm/client/static/transit.js | 21 ++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tnm/client/static/images/ledlightblue_16px.png create mode 100644 tnm/client/static/images/ledlightblue_48px.png diff --git a/tnm/client/static/images/ledlightblue_16px.png b/tnm/client/static/images/ledlightblue_16px.png new file mode 100644 index 0000000000000000000000000000000000000000..8e346fc7a3f4c16c92b6fee61f137b6a96be0448 GIT binary patch literal 1639 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 literal 0 HcmV?d00001 diff --git a/tnm/client/static/tnm.js b/tnm/client/static/tnm.js index 3ade0fc..b33b611 100644 --- a/tnm/client/static/tnm.js +++ b/tnm/client/static/tnm.js @@ -135,7 +135,11 @@ $(function() { var geolocate = function() { Transit.tryGeolocating( - function(latlng) { map.center(latlng); }, + function(latlng) { + Transit.current.set = true; + Transit.current.location = latlng; + map.center(latlng); + }, function(error) { map.center(); }); } diff --git a/tnm/client/static/transit.js b/tnm/client/static/transit.js index 33cdbfa..195de66 100644 --- a/tnm/client/static/transit.js +++ b/tnm/client/static/transit.js @@ -398,6 +398,15 @@ Transit._leafletMap.prototype.overlay = function(overlayID, overlay) { stop.layer = stop_marker; layers.addLayer(stop_marker); } + + // Build current location marker + if (Transit.current && Transit.current.set) { + var icon = new Transit._leafletMap.CurrentIcon(), + current_marker = new L.Marker(Transit.current.location, {icon : icon}), + popup_content = '


Current
location

'; + current_marker.bindPopup(popup_content); + layers.addLayer(current_marker); + } oldLayer && this.map.removeLayer(oldLayer); this.layers[overlayID] = layers; @@ -405,6 +414,10 @@ Transit._leafletMap.prototype.overlay = function(overlayID, overlay) { this.map.addLayer(layers); } +Transit.current = new Object(); +Transit.current.set = false; +Transit.current.location = new L.LatLng(0, 0); + Transit._leafletMap.prototype.radius = function(latlng, radius_m) { var radius = this.layers['radius']; if (radius) { @@ -427,3 +440,11 @@ Transit._leafletMap.TransitIcon = L.Icon.extend({ iconAnchor: new L.Point(13, 13), popupAnchor: new L.Point(0, 0) }); + +Transit._leafletMap.CurrentIcon = L.Icon.extend({ + iconUrl: '/static/images/ledlightblue_16px.png', + shadowUrl: '', + iconSize: new L.Point(16, 16), + iconAnchor: new L.Point(13, 13), + popupAnchor: new L.Point(0, 0) +});