diff options
Diffstat (limited to 'web/js')
-rw-r--r-- | web/js/map-OpenLayers.js | 19 | ||||
-rw-r--r-- | web/js/map-wms-base.js | 20 | ||||
-rw-r--r-- | web/js/map-wms-northamptonshire.js | 38 |
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'; + } +}; |