aboutsummaryrefslogtreecommitdiffstats
path: root/www/js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js')
-rw-r--r--www/js/fixmystreet.js20
-rw-r--r--www/js/map-OpenLayers.js43
2 files changed, 63 insertions, 0 deletions
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()
*/