diff options
author | Struan Donald <struan@exo.org.uk> | 2012-11-05 09:43:15 +0000 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2012-11-05 09:43:15 +0000 |
commit | c0c0bb187471e68b9931f65315154cb8d1eca718 (patch) | |
tree | bdb38ce63a70aca92185356c4419d210f925b6e3 /www/js/map-OpenLayers.js | |
parent | 6682873094f1a8f5ce881e0481f9ad5712a87945 (diff) | |
parent | 7beffbb3a31ae6bc6814d3e80522d40e930a440d (diff) |
Merge remote-tracking branch 'origin/crosshairs-front-page' into phonegap-jquery-mobile
Conflicts:
phonegap/www/css/mobile.css
phonegap/www/index.html
phonegap/www/js/fixmystreet.js
Diffstat (limited to 'www/js/map-OpenLayers.js')
-rw-r--r-- | www/js/map-OpenLayers.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/www/js/map-OpenLayers.js b/www/js/map-OpenLayers.js index 3c136cf..7edcffa 100644 --- a/www/js/map-OpenLayers.js +++ b/www/js/map-OpenLayers.js @@ -1,3 +1,5 @@ +// -*- mode: espresso; espresso-indent-level: 4; indent-tabs-mode: nil -*- + // This function might be passed either an OpenLayers.LonLat (so has // lon and lat) or an OpenLayers.Geometry.Point (so has x and y) function fixmystreet_update_pin(lonlat) { @@ -204,6 +206,7 @@ function fixmystreet_onload() { } }); + fixmystreet.map.addControl( new OpenLayers.Control.Crosshairs(null) ); } OpenLayers.Map.prototype.getCurrentSize = function() { var mapDiv = $(this.div); @@ -369,6 +372,48 @@ $(document).delegate('#around-page', 'pageshow', show_map ); $(document).delegate('#report-page', 'pageshow', show_map ); +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() */ |