diff options
-rw-r--r-- | www/css/mobile.css | 26 | ||||
-rw-r--r-- | www/frontpage-map.html | 75 | ||||
-rw-r--r-- | www/js/fixmystreet.js | 20 | ||||
-rw-r--r-- | www/js/map-OpenLayers.js | 43 |
4 files changed, 134 insertions, 30 deletions
diff --git a/www/css/mobile.css b/www/css/mobile.css index 0cabbe5..e684d66 100644 --- a/www/css/mobile.css +++ b/www/css/mobile.css @@ -138,6 +138,32 @@ input.green-btn:hover { border-right: #BCEF58; } +#mark-here { + font-size: 1.2em; + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + -o-border-radius: 0.25em; + -ms-border-radius: 0.25em; + -khtml-border-radius: 0.25em; + border-radius: 0.25em; + margin-top: 0.5em; + background: #9fde23; + border-top: #CAEF80; + border-left: #BCEF58; + border-right: #BCEF58; + + position: absolute; + top: 360px; + left: 60px; + z-index: 2000; + display: block; + padding: 10px; +} + +#OpenLayers_Control_Crosshairs_crosshairs { + pointer-events: none +} + #loadingSpinner { display: none; } diff --git a/www/frontpage-map.html b/www/frontpage-map.html index 2af30ce..3346b15 100644 --- a/www/frontpage-map.html +++ b/www/frontpage-map.html @@ -19,22 +19,39 @@ <script type="text/javascript" src="js/geo.min.js"></script> <script type="text/javascript" src="js/fixmystreet.js"></script> <script type="text/javascript" src="js/mobile.js"></script> + <script type="text/javascript" src="js/OpenLayers.fixmystreet.js"></script> + <script type="text/javascript" src="js/map-OpenLayers.js"></script> + <script type="text/javascript" src="js/map-bing-ol.js"></script> + <script type="text/javascript" src="js/jquery.ba-hashchange.min.js"></script> <script type="text/javascript"> + var fixmystreet = { + 'page': 'around', + 'area': '', + 'all_pins': '', + 'latitude': localStorage.latitude, + 'longitude': localStorage.longitude, + 'zoom': 2, + 'numZoomLevels': 5, + 'zoomOffset': 13, + 'map_type': "", + 'pins': [ ] + }; + + $('#fixmystreet\\.latitude').val( localStorage.latitude ); + $('#fixmystreet\\.longitude').val( localStorage.longitude ); + $('#pc').val( localStorage.pc ); + function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function gotPosition(position) { - var element = document.getElementById('geolocation'); - element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' + - 'Longitude: ' + position.coords.longitude + '<br />' + - '<hr />' + element.innerHTML; - - - - + localStorage.latitude = position.coords.latitude; + localStorage.longitude = position.coords.longitude; + localStorage.pc = ''; + $(window).resize(); } function positionError(error) { @@ -74,35 +91,33 @@ </head> <body id="container" class="frontpage fullwidthpage" onload="onLoad()" ontouchmove="touchmove(event);"> - <div id="map_box"> - <div id="map"></div> + <div class="wrapper"> + + <header id="site-header" role="banner"> + <div class="container"> + <span id="site-logo"></span> + </div> + </header> + + <a id="mark-here"> + Mark this point + </a> + + <div class="container"> + <div class="content" role="main"> + + <div id="map_box"> + <div id="map"></div> <p id="sub_map_links"> <a id="hide_pins_link" rel="nofollow" href="">Hide pins</a> <a id="all_pins_link" rel="nofollow" href="">Show old</a> </p> </div> + </div> + </div> - <div id="side"> - - <h1 class="big-green-banner">Click map to report a problem</h1> - - <section class="full-width"> - <menu id="problems-nav" class="tab-nav"> - <ul> - <li><a href="#current">Problems on the map</a></li> - <li><a href="#current_near">Problems nearby</a></li> - </ul> - </menu> - <ul id="current" class="issue-list-a tab"> - <li><p>No problems have been reported yet.</p></li> - </ul> - <ul id="current_near" class="issue-list-a tab"> - <li><p>No problems found.</p></li> - </ul> - </section> - </div> - </div> + </div> </body> diff --git a/www/js/fixmystreet.js b/www/js/fixmystreet.js index 29de3ef..9b8708f 100644 --- a/www/js/fixmystreet.js +++ b/www/js/fixmystreet.js @@ -88,6 +88,26 @@ $(function(){ var last_type; $(window).resize(function(){ + + var crosshairsControls, i, markHere, newX, newY; + + if (typeof fixmystreet.map !== "undefined") { + // Update the position of any crosshairs controls: + crosshairsControls = fixmystreet.map.getControlsByClass( + "OpenLayers.Control.Crosshairs"); + for (i = 0; i < crosshairsControls.length; ++i) { + crosshairsControls[i].reposition(); + } + // Also reposition the "Tap here to mark this point" button: + markHere = $('#mark-here'); + newX = $(window).width() / 2 - markHere.width() / 2; + newY = $(window).height() * 4 / 5 - markHere.height() / 2; + markHere.css({ + left: newX + "px", + top: newY + "px" + }); + } + var type = $('#site-header').css('borderTopWidth'); if (type == '4px') { type = 'mobile'; diff --git a/www/js/map-OpenLayers.js b/www/js/map-OpenLayers.js index e64ff55..c845978 100644 --- a/www/js/map-OpenLayers.js +++ b/www/js/map-OpenLayers.js @@ -206,6 +206,7 @@ function fixmystreet_onload() { } }); + fixmystreet.map.addControl( new OpenLayers.Control.Crosshairs(null) ); } $(function(){ @@ -309,6 +310,48 @@ $(function(){ } }); +OpenLayers.Control.Crosshairs = OpenLayers.Class.create(); +OpenLayers.Control.Crosshairs.CROSSHAIR_SIDE = 100; +OpenLayers.Control.Crosshairs.DIV_ID = "OpenLayers_Control_Crosshairs_crosshairs"; +OpenLayers.Control.Crosshairs.prototype = + OpenLayers.Class.inherit( OpenLayers.Control, { + element: null, + position: null, + + initialize: function(element) { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + this.element = OpenLayers.Util.getElement(element); + this.imageSize = new OpenLayers.Size(OpenLayers.Control.Crosshairs.CROSSHAIR_SIDE, + OpenLayers.Control.Crosshairs.CROSSHAIR_SIDE); + }, + + draw: function() { + var position; + OpenLayers.Control.prototype.draw.apply(this, arguments); + position = this.getIdealPosition(); + this.buttons = new Array(); + var imgLocation = OpenLayers.Util.getImagesLocation() + "crosshairs-100.png"; + return OpenLayers.Util.createAlphaImageDiv(OpenLayers.Control.Crosshairs.DIV_ID, + position, this.imageSize, imgLocation, "absolute"); + }, + + getIdealPosition: function() { + this.map.updateSize(); + var mapSize = this.map.getSize(); + return new OpenLayers.Pixel((mapSize.w / 2) - (this.imageSize.w / 2), + (2 * mapSize.h / 5) - (this.imageSize.h / 2)); + }, + + reposition: function() { + var position = this.getIdealPosition(); + $('#' + OpenLayers.Control.Crosshairs.DIV_ID).css({ + left: position.x, + top: position.y}); + }, + + CLASS_NAME: "OpenLayers.Control.Crosshairs" +}); + /* Overridding the buttonDown function of PanZoom so that it does zoomTo(0) rather than zoomToMaxExtent() */ |