summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/geo/openlayers/Layer.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo/dojox/geo/openlayers/Layer.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo/dojox/geo/openlayers/Layer.js')
-rw-r--r--js/dojo/dojox/geo/openlayers/Layer.js164
1 files changed, 164 insertions, 0 deletions
diff --git a/js/dojo/dojox/geo/openlayers/Layer.js b/js/dojo/dojox/geo/openlayers/Layer.js
new file mode 100644
index 0000000..c01f79f
--- /dev/null
+++ b/js/dojo/dojox/geo/openlayers/Layer.js
@@ -0,0 +1,164 @@
+//>>built
+define("dojox/geo/openlayers/Layer", ["dojo/_base/kernel", "dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/sniff"],
+ function(dojo, declare, lang, array, sniff){
+
+ return declare("dojox.geo.openlayers.Layer", null, {
+ // summary:
+ // Base layer class for dojox.geo.openlayers.Map specific layers extending OpenLayers.Layer class.
+ // This layer class accepts Features which encapsulates graphic objects to be added to the map.
+ // This layer class encapsulates an OpenLayers.Layer.
+ // This class provides Feature management such as add, remove and feature access.
+ constructor : function(name, options){
+ // summary:
+ // Constructs a new Layer.
+ // name: String
+ // The name of the layer.
+ // options: Object
+ // Options passed to the underlying OpenLayers.Layer object.
+
+ var ol = options ? options.olLayer : null;
+
+ if (!ol)
+ ol = lang.delegate(new OpenLayers.Layer(name, options));
+
+ this.olLayer = ol;
+ this._features = null;
+ this.olLayer.events.register("moveend", this, lang.hitch(this, this.moveTo));
+ },
+
+ renderFeature : function(/* Feature */f){
+ // summary:
+ // Called when rendering a feature is necessary.
+ // f : Feature
+ // The feature to draw.
+ f.render();
+ },
+
+ getDojoMap : function(){
+ return this.dojoMap;
+ },
+
+ addFeature : function(/* Feature | Array */f){
+ // summary:
+ // Add a feature or an array of features to the layer.
+ // f : Feature or Array
+ // The Feature or array of features to add.
+ if (lang.isArray(f)) {
+ array.forEach(f, function(item){
+ this.addFeature(item);
+ }, this);
+ return;
+ }
+ if (this._features == null)
+ this._features = [];
+ this._features.push(f);
+ f._setLayer(this);
+ },
+
+ removeFeature : function(/* Feature | Array */f){
+ // summary :
+ // Removes a feature or an array of features from the layer.
+ // f : Feature or Array
+ // The Feature or array of features to remove.
+ var ft = this._features;
+ if (ft == null)
+ return;
+ if (f instanceof Array) {
+ f = f.slice(0);
+ array.forEach(f, function(item){
+ this.removeFeature(item);
+ }, this);
+ return;
+ }
+ var i = array.indexOf(ft, f);
+ if (i != -1)
+ ft.splice(i, 1);
+ f._setLayer(null);
+ f.remove();
+ },
+
+ removeFeatureAt : function(index){
+ // summary:
+ // Remove the feature at the specified index.
+ // description:
+ // Remove the feature at the specified index.
+ // index: Number
+ // The index of the feature to remove.
+ var ft = this._features;
+ var f = ft[index];
+ if (!f)
+ return;
+ ft.splice(index, 1);
+ f._setLayer(null);
+ f.remove();
+ },
+
+ getFeatures : function(){
+ // summary:
+ // Retrieves the feature hold by this layer.
+ // returns: Array
+ // The untouched array of features hold by this layer.
+ return this._features;
+ },
+
+ getFeatureAt : function(i){
+ // summary:
+ // Returns the i-th feature of this layer.
+ // i : int
+ // The index of the feature to return.
+ // returns : ibm_maps.maps.Layer
+ // The i-th feature of this layer.
+ if (this._features == null)
+ return undefined;
+ return this._features[i];
+ },
+
+ getFeatureCount : function(){
+ // summary:
+ // Returns the number of the features contained by this layer.
+ // returns: int
+ // The number of the features contained by this layer.
+ if (this._features == null)
+ return 0;
+ return this._features.length;
+ },
+
+ clear : function(){
+ // summary:
+ // Removes all the features from this layer.
+ var fa = this.getFeatures();
+ this.removeFeature(fa);
+ },
+
+ moveTo : function(event){
+ // summary:
+ // Called when the layer is panned or zoomed.
+ // event: Object
+ // The event
+ if (event.zoomChanged) {
+ if (this._features == null)
+ return;
+ array.forEach(this._features, function(f){
+ this.renderFeature(f);
+ }, this);
+ }
+ },
+
+ redraw : function(){
+ // summary:
+ // Redraws this layer
+ if (sniff.isIE)
+ setTimeout(lang.hitch(this, function(){
+ this.olLayer.redraw();
+ }, 0));
+ else
+ this.olLayer.redraw();
+ },
+
+ added : function(){
+ // summary:
+ // Called when the layer is added to the map
+ }
+
+ });
+ });