diff options
author | Matthew Somerville <matthew@balti.ukcod.org.uk> | 2010-12-04 00:08:54 +0000 |
---|---|---|
committer | Matthew Somerville <matthew@balti.ukcod.org.uk> | 2010-12-04 00:08:54 +0000 |
commit | a4ab584cfc27886373a042f83be3129fde1ccba9 (patch) | |
tree | d42ed9d63005081acdd2c62aa458bebd3d478b1c | |
parent | 92c0661cf40f9a8e39613784703bb6b2b9ac8a49 (diff) |
Google Maps package.
-rw-r--r-- | perllib/FixMyStreet/Map/Google.pm | 71 | ||||
-rw-r--r-- | web/js/map-google.js | 22 |
2 files changed, 93 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Map/Google.pm b/perllib/FixMyStreet/Map/Google.pm new file mode 100644 index 000000000..7a314efad --- /dev/null +++ b/perllib/FixMyStreet/Map/Google.pm @@ -0,0 +1,71 @@ +#!/usr/bin/perl +# +# FixMyStreet:Map::Google +# Google maps on FixMyStreet. +# +# Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/ + +package FixMyStreet::Map; + +use strict; +use mySociety::GeoUtil; +use mySociety::Web qw(ent); + +sub header_js { + return ' +<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> +<script type="text/javascript" src="/js/map-google.js"></script> +'; +} + +# display_map Q PARAMS +# PARAMS include: +# EASTING, NORTHING for the centre point of the map +# TYPE is 1 if the map is clickable, 2 if clickable and has a form upload, +# 0 if not clickable +# PINS is array of pins to show, location and colour +# PRE/POST are HTML to show above/below map +sub display_map { + my ($q, %params) = @_; + $params{pre} ||= ''; + $params{post} ||= ''; + + foreach my $pin (@{$params{pins}}) { + } + + my $out = FixMyStreet::Map::header($q, $params{type}); + my ($lat, $lon) = mySociety::GeoUtil::national_grid_to_wgs84($params{easting}, $params{northing}, 'G'); + my $copyright = _('Map contains Ordnance Survey data © Crown copyright and database right 2010.'); + $out .= <<EOF; +<script type="text/javascript"> +var fixmystreet = { + 'lat': $lat, + 'lon': $lon +} +</script> +<div id="map_box"> + $params{pre} + <div id="map"></div> + <p id="copyright">$copyright</p> + $params{post} +</div> +<div id="side"> +EOF + return $out; +} + +sub display_map_end { + my ($type) = @_; + my $out = '</div>'; + $out .= '</form>' if ($type); + return $out; +} + +sub display_pin { +} + +sub map_pins { +} + +1; diff --git a/web/js/map-google.js b/web/js/map-google.js new file mode 100644 index 000000000..77e54ab7c --- /dev/null +++ b/web/js/map-google.js @@ -0,0 +1,22 @@ +YAHOO.util.Event.onContentReady('map', function() { + var centre = new google.maps.LatLng( fixmystreet.lat, fixmystreet.lon ); + var map = new google.maps.Map(document.getElementById("map"), { + mapTypeId: google.maps.MapTypeId.ROADMAP, + center: centre, + zoom: 16, + disableDefaultUI: true, + navigationControl: true, + navigationControlOptions: { + style: google.maps.NavigationControlStyle.SMALL + }, + mapTypeControl: true, + mapTypeControlOptions: { + style: google.maps.MapTypeControlStyle.DROPDOWN_MENU + } + }); + + google.maps.event.addListener(map, "zoom_changed", function() { + if (map.getZoom() < 13) map.setZoom(13); + if (map.getZoom() > 17) map.setZoom(17); + }); +}); |