summaryrefslogtreecommitdiff
path: root/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/lib/OpenLayers/Strategy/BBOX.js')
-rw-r--r--misc/openlayers/lib/OpenLayers/Strategy/BBOX.js290
1 files changed, 0 insertions, 290 deletions
diff --git a/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js b/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js
deleted file mode 100644
index e066764..0000000
--- a/misc/openlayers/lib/OpenLayers/Strategy/BBOX.js
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
- * full list of contributors). Published under the 2-clause BSD license.
- * See license.txt in the OpenLayers distribution or repository for the
- * full text of the license. */
-
-/**
- * @requires OpenLayers/Strategy.js
- * @requires OpenLayers/Filter/Spatial.js
- */
-
-/**
- * Class: OpenLayers.Strategy.BBOX
- * A simple strategy that reads new features when the viewport invalidates
- * some bounds.
- *
- * Inherits from:
- * - <OpenLayers.Strategy>
- */
-OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
-
- /**
- * Property: bounds
- * {<OpenLayers.Bounds>} The current data bounds (in the same projection
- * as the layer - not always the same projection as the map).
- */
- bounds: null,
-
- /**
- * Property: resolution
- * {Float} The current data resolution.
- */
- resolution: null,
-
- /**
- * APIProperty: ratio
- * {Float} The ratio of the data bounds to the viewport bounds (in each
- * dimension). Default is 2.
- */
- ratio: 2,
-
- /**
- * Property: resFactor
- * {Float} Optional factor used to determine when previously requested
- * features are invalid. If set, the resFactor will be compared to the
- * resolution of the previous request to the current map resolution.
- * If resFactor > (old / new) and 1/resFactor < (old / new). If you
- * set a resFactor of 1, data will be requested every time the
- * resolution changes. If you set a resFactor of 3, data will be
- * requested if the old resolution is 3 times the new, or if the new is
- * 3 times the old. If the old bounds do not contain the new bounds
- * new data will always be requested (with or without considering
- * resFactor).
- */
- resFactor: null,
-
- /**
- * Property: response
- * {<OpenLayers.Protocol.Response>} The protocol response object returned
- * by the layer protocol.
- */
- response: null,
-
- /**
- * Constructor: OpenLayers.Strategy.BBOX
- * Create a new BBOX strategy.
- *
- * Parameters:
- * options - {Object} Optional object whose properties will be set on the
- * instance.
- */
-
- /**
- * Method: activate
- * Set up strategy with regard to reading new batches of remote data.
- *
- * Returns:
- * {Boolean} The strategy was successfully activated.
- */
- activate: function() {
- var activated = OpenLayers.Strategy.prototype.activate.call(this);
- if(activated) {
- this.layer.events.on({
- "moveend": this.update,
- "refresh": this.update,
- "visibilitychanged": this.update,
- scope: this
- });
- this.update();
- }
- return activated;
- },
-
- /**
- * Method: deactivate
- * Tear down strategy with regard to reading new batches of remote data.
- *
- * Returns:
- * {Boolean} The strategy was successfully deactivated.
- */
- deactivate: function() {
- var deactivated = OpenLayers.Strategy.prototype.deactivate.call(this);
- if(deactivated) {
- this.layer.events.un({
- "moveend": this.update,
- "refresh": this.update,
- "visibilitychanged": this.update,
- scope: this
- });
- }
- return deactivated;
- },
-
- /**
- * Method: update
- * Callback function called on "moveend" or "refresh" layer events.
- *
- * Parameters:
- * options - {Object} Optional object whose properties will determine
- * the behaviour of this Strategy
- *
- * Valid options include:
- * force - {Boolean} if true, new data must be unconditionally read.
- * noAbort - {Boolean} if true, do not abort previous requests.
- */
- update: function(options) {
- var mapBounds = this.getMapBounds();
- if (mapBounds !== null && ((options && options.force) ||
- (this.layer.visibility && this.layer.calculateInRange() && this.invalidBounds(mapBounds)))) {
- this.calculateBounds(mapBounds);
- this.resolution = this.layer.map.getResolution();
- this.triggerRead(options);
- }
- },
-
- /**
- * Method: getMapBounds
- * Get the map bounds expressed in the same projection as this layer.
- *
- * Returns:
- * {<OpenLayers.Bounds>} Map bounds in the projection of the layer.
- */
- getMapBounds: function() {
- if (this.layer.map === null) {
- return null;
- }
- var bounds = this.layer.map.getExtent();
- if(bounds && !this.layer.projection.equals(
- this.layer.map.getProjectionObject())) {
- bounds = bounds.clone().transform(
- this.layer.map.getProjectionObject(), this.layer.projection
- );
- }
- return bounds;
- },
-
- /**
- * Method: invalidBounds
- * Determine whether the previously requested set of features is invalid.
- * This occurs when the new map bounds do not contain the previously
- * requested bounds. In addition, if <resFactor> is set, it will be
- * considered.
- *
- * Parameters:
- * mapBounds - {<OpenLayers.Bounds>} the current map extent, will be
- * retrieved from the map object if not provided
- *
- * Returns:
- * {Boolean}
- */
- invalidBounds: function(mapBounds) {
- if(!mapBounds) {
- mapBounds = this.getMapBounds();
- }
- var invalid = !this.bounds || !this.bounds.containsBounds(mapBounds);
- if(!invalid && this.resFactor) {
- var ratio = this.resolution / this.layer.map.getResolution();
- invalid = (ratio >= this.resFactor || ratio <= (1 / this.resFactor));
- }
- return invalid;
- },
-
- /**
- * Method: calculateBounds
- *
- * Parameters:
- * mapBounds - {<OpenLayers.Bounds>} the current map extent, will be
- * retrieved from the map object if not provided
- */
- calculateBounds: function(mapBounds) {
- if(!mapBounds) {
- mapBounds = this.getMapBounds();
- }
- var center = mapBounds.getCenterLonLat();
- var dataWidth = mapBounds.getWidth() * this.ratio;
- var dataHeight = mapBounds.getHeight() * this.ratio;
- this.bounds = new OpenLayers.Bounds(
- center.lon - (dataWidth / 2),
- center.lat - (dataHeight / 2),
- center.lon + (dataWidth / 2),
- center.lat + (dataHeight / 2)
- );
- },
-
- /**
- * Method: triggerRead
- *
- * Parameters:
- * options - {Object} Additional options for the protocol's read method
- * (optional)
- *
- * Returns:
- * {<OpenLayers.Protocol.Response>} The protocol response object
- * returned by the layer protocol.
- */
- triggerRead: function(options) {
- if (this.response && !(options && options.noAbort === true)) {
- this.layer.protocol.abort(this.response);
- this.layer.events.triggerEvent("loadend");
- }
- var evt = {filter: this.createFilter()};
- this.layer.events.triggerEvent("loadstart", evt);
- this.response = this.layer.protocol.read(
- OpenLayers.Util.applyDefaults({
- filter: evt.filter,
- callback: this.merge,
- scope: this
- }, options));
- },
-
- /**
- * Method: createFilter
- * Creates a spatial BBOX filter. If the layer that this strategy belongs
- * to has a filter property, this filter will be combined with the BBOX
- * filter.
- *
- * Returns
- * {<OpenLayers.Filter>} The filter object.
- */
- createFilter: function() {
- var filter = new OpenLayers.Filter.Spatial({
- type: OpenLayers.Filter.Spatial.BBOX,
- value: this.bounds,
- projection: this.layer.projection
- });
- if (this.layer.filter) {
- filter = new OpenLayers.Filter.Logical({
- type: OpenLayers.Filter.Logical.AND,
- filters: [this.layer.filter, filter]
- });
- }
- return filter;
- },
-
- /**
- * Method: merge
- * Given a list of features, determine which ones to add to the layer.
- * If the layer projection differs from the map projection, features
- * will be transformed from the layer projection to the map projection.
- *
- * Parameters:
- * resp - {<OpenLayers.Protocol.Response>} The response object passed
- * by the protocol.
- */
- merge: function(resp) {
- this.layer.destroyFeatures();
- if (resp.success()) {
- var features = resp.features;
- if(features && features.length > 0) {
- var remote = this.layer.projection;
- var local = this.layer.map.getProjectionObject();
- if(!local.equals(remote)) {
- var geom;
- for(var i=0, len=features.length; i<len; ++i) {
- geom = features[i].geometry;
- if(geom) {
- geom.transform(remote, local);
- }
- }
- }
- this.layer.addFeatures(features);
- }
- } else {
- this.bounds = null;
- }
- this.response = null;
- this.layer.events.triggerEvent("loadend", {response: resp});
- },
-
- CLASS_NAME: "OpenLayers.Strategy.BBOX"
-});