diff options
author | Matthew Somerville <matthew@fury.ukcod.org.uk> | 2011-02-17 01:02:46 +0000 |
---|---|---|
committer | Matthew Somerville <matthew@fury.ukcod.org.uk> | 2011-02-17 01:02:46 +0000 |
commit | 3033514eec2a30d43797c42eeb175fa9da9aeef1 (patch) | |
tree | c68a775bdbdd6789aea2290c629dd0e145dab31e | |
parent | 2699b760e4b08b1422ab8232af4081f75627588e (diff) |
Display pins.
-rw-r--r-- | perllib/FixMyStreet/Map/OSM.pm | 3 | ||||
-rwxr-xr-x | web/index.cgi | 4 | ||||
-rw-r--r-- | web/js/map-OpenStreetMap.js | 23 |
3 files changed, 21 insertions, 9 deletions
diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm index 0db09b928..820a4ce63 100644 --- a/perllib/FixMyStreet/Map/OSM.pm +++ b/perllib/FixMyStreet/Map/OSM.pm @@ -32,7 +32,8 @@ sub display_map { my @pins; foreach my $pin (@{$params{pins}}) { - push @pins, "[ $pin->[0], $pin->[1], '$pin->[2]' ]"; + $pin->[3] ||= ''; + push @pins, "[ $pin->[0], $pin->[1], '$pin->[2]', '$pin->[3]' ]"; } my $pins = join(",\n", @pins); diff --git a/web/index.cgi b/web/index.cgi index 098602e5d..ded2583ea 100755 --- a/web/index.cgi +++ b/web/index.cgi @@ -892,7 +892,7 @@ sub display_location { my ($on_map_all, $on_map, $around_map, $dist) = FixMyStreet::Map::map_features($q, $latitude, $longitude, $interval); my @pins; foreach (@$on_map_all) { - push @pins, [ $_->{latitude}, $_->{longitude}, $_->{state} eq 'fixed' ? 'green' : 'red' ]; + push @pins, [ $_->{latitude}, $_->{longitude}, ($_->{state} eq 'fixed' ? 'green' : 'red'), $_->{id} ]; } my $on_list = ''; foreach (@$on_map) { @@ -918,7 +918,7 @@ sub display_location { $around_list .= $dist . 'km)</small>'; $around_list .= ' <small>' . _('(fixed)') . '</small>' if $_->{state} eq 'fixed'; $around_list .= '</li>'; - push @pins, [ $_->{latitude}, $_->{longitude}, $_->{state} eq 'fixed' ? 'green' : 'red' ]; + push @pins, [ $_->{latitude}, $_->{longitude}, ($_->{state} eq 'fixed' ? 'green' : 'red'), $_->{id} ]; } $around_list = $q->li(_('No problems found.')) unless $around_list; diff --git a/web/js/map-OpenStreetMap.js b/web/js/map-OpenStreetMap.js index 0caa32b38..c5aa318b0 100644 --- a/web/js/map-OpenStreetMap.js +++ b/web/js/map-OpenStreetMap.js @@ -21,9 +21,11 @@ YAHOO.util.Event.onContentReady('map', function() { ); fixmystreet.map.setCenter(centre, 2); - var click = new OpenLayers.Control.Click(); - fixmystreet.map.addControl(click); - click.activate(); + if (document.getElementById('mapForm')) { + var click = new OpenLayers.Control.Click(); + fixmystreet.map.addControl(click); + click.activate(); + } var markers = new OpenLayers.Layer.Markers("Markers"); var cols = { 'red':'R', 'green':'G', 'blue':'B', 'purple':'P' }; @@ -31,12 +33,21 @@ YAHOO.util.Event.onContentReady('map', function() { var pin = fixmystreet.pins[i]; var src = '/i/pin' + cols[pin[2]] + '.gif'; var size = new OpenLayers.Size(32, 59); - var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); + var offset = new OpenLayers.Pixel(-3, -size.h-2); var icon = new OpenLayers.Icon(src, size, offset); - markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(pin[1],pin[0]), icon)); + var loc = new OpenLayers.LonLat(pin[1], pin[0]); + loc.transform( + new OpenLayers.Projection("EPSG:4326"), + fixmystreet.map.getProjectionObject() + ); + var marker = new OpenLayers.Marker(loc, icon); + if (pin[3]) { + marker.events.register('click', marker, function(evt) { window.location = '/report/' + pin[3]; OpenLayers.Event.stop(evt); }); + } + markers.addMarker(marker); } - fixmystreet.map.addLayer(markers); + }); OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { |