aboutsummaryrefslogtreecommitdiffstats
path: root/web/js
diff options
context:
space:
mode:
Diffstat (limited to 'web/js')
-rw-r--r--web/js/map-OpenLayers.js19
-rw-r--r--web/js/map-wms-base.js20
-rw-r--r--web/js/map-wms-northamptonshire.js38
3 files changed, 74 insertions, 3 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 6142b3e23..182cd79a1 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -943,10 +943,23 @@ $.extend(fixmystreet.utils, {
// This option is thankfully used by them both
numZoomLevels: fixmystreet.numZoomLevels
}, fixmystreet.layer_options[i]);
- if (fixmystreet.layer_options[i].matrixIds) {
- layer = new fixmystreet.map_type(fixmystreet.layer_options[i]);
+ var layer_options = fixmystreet.layer_options[i];
+ if (layer_options.wms_version) {
+ var options = {
+ layers: layer_options.layer_names[0],
+ size: layer_options.tile_size,
+ format: layer_options.format
+ };
+ layer = new fixmystreet.map_type(
+ layer_options.name,
+ layer_options.url,
+ options,
+ layer_options
+ );
+ } else if (layer_options.matrixIds) {
+ layer = new fixmystreet.map_type(layer_options);
} else {
- layer = new fixmystreet.map_type(fixmystreet.layer_name, fixmystreet.layer_options[i]);
+ layer = new fixmystreet.map_type(fixmystreet.layer_name, layer_options);
}
fixmystreet.map.addLayer(layer);
}
diff --git a/web/js/map-wms-base.js b/web/js/map-wms-base.js
new file mode 100644
index 000000000..54b88bfe3
--- /dev/null
+++ b/web/js/map-wms-base.js
@@ -0,0 +1,20 @@
+// Functionality required by all OpenLayers WMS base maps
+
+fixmystreet.maps.setup_wms_base_map = function() {
+ fixmystreet.map_type = OpenLayers.Layer.WMS;
+
+ fixmystreet.map_options = {
+ maxExtent: this.layer_bounds,
+ units: 'm'
+ };
+
+ fixmystreet.layer_options = [];
+ $.each(fixmystreet.wms_config.layer_names, function(i, v) {
+ fixmystreet.layer_options.push(OpenLayers.Util.extend({
+ projection: new OpenLayers.Projection(fixmystreet.wms_config.map_projection),
+ name: v,
+ layer: v,
+ url: fixmystreet.wms_config.tile_urls[i]
+ }, fixmystreet.wms_config));
+ });
+};
diff --git a/web/js/map-wms-northamptonshire.js b/web/js/map-wms-northamptonshire.js
new file mode 100644
index 000000000..40d6d10a8
--- /dev/null
+++ b/web/js/map-wms-northamptonshire.js
@@ -0,0 +1,38 @@
+/*
+ * Maps for FMS using Northamptonshire's tile server
+ */
+
+fixmystreet.maps.layer_bounds = new OpenLayers.Bounds(
+395000,210000,572000,325000
+);
+
+/*
+ * maps.config() is called on dom ready in map-OpenLayers.js
+ * to setup the way the map should operate.
+ */
+fixmystreet.maps.config = function() {
+ fixmystreet.controls = [
+ new OpenLayers.Control.ArgParserFMS(),
+ new OpenLayers.Control.Navigation(),
+ new OpenLayers.Control.PermalinkFMS('map'),
+ new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' })
+ ];
+
+ /* Linking back to around from report page, keeping track of map moves */
+ if ( fixmystreet.page == 'report' ) {
+ fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') );
+ }
+
+ this.setup_wms_base_map();
+};
+
+fixmystreet.maps.marker_size = function() {
+ var zoom = fixmystreet.map.getZoom() + fixmystreet.zoomOffset;
+ if (zoom >= 8) {
+ return 'normal';
+ } else if (zoom >= 4) {
+ return 'small';
+ } else {
+ return 'mini';
+ }
+};