]> git.openstreetmap.org Git - rails.git/blobdiff - public/lib/OpenLayers/Layer/KaMap.js
openlayers madness
[rails.git] / public / lib / OpenLayers / Layer / KaMap.js
diff --git a/public/lib/OpenLayers/Layer/KaMap.js b/public/lib/OpenLayers/Layer/KaMap.js
new file mode 100644 (file)
index 0000000..e4f4145
--- /dev/null
@@ -0,0 +1,53 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the full
+ * text of the license. */
+// @require: OpenLayers/Layer/Grid.js
+/**
+* @class
+*/
+OpenLayers.Layer.KaMap = Class.create();
+OpenLayers.Layer.KaMap.prototype = 
+  Object.extend( new OpenLayers.Layer.Grid(), {
+    metaTileHeight: 6,
+    metaTileWidth: 6,
+    
+    DEFAULT_PARAMS: {
+        i: 'jpeg',
+        map: ''
+    },
+        
+    // this.cellSize = newScale/(oMap.resolution * inchesPerUnit[oMap.units]);
+    // kaMap.prototype.geoToPix = function( gX, gY ) { var pX = gX / this.cellSize; var pY = -1 * gY / this.cellSize; }
+    initialize: function(name, url, params, origin) {
+        this.kaOrigin = origin;
+        var newArguments = new Array();
+        newArguments.push(name, url, params);
+        OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments);
+        this.params = (params ? params : {});
+        if (arguments.length > 0 && params) {
+            OpenLayers.Util.applyDefaults(
+                           this.params, 
+                           this.DEFAULT_PARAMS
+                           );
+        }
+    },
+    addTile:function(bounds,position) {
+        var zoom = this.map.getZoom();
+        var resolution = this.map.getResolution();
+        var scale = 128000000 / Math.pow(2, zoom);
+        // 1280000 is an empirical value for a specific tile server, not yet figured out the right way to do this in general.
+        // This will probably be based on map.maxResolution.
+        var cellSize = new OpenLayers.Size(resolution*this.tileSize.w, resolution*this.tileSize.h);
+        var pX = Math.floor(((bounds.left + this.kaOrigin.lon) / cellSize.w) * this.tileSize.w);
+        var pY = -Math.floor(((bounds.top+this.kaOrigin.lat) / cellSize.h) * this.tileSize.h);
+        var url = this.getFullRequestString(
+                      { t: pY, 
+                        l: pX,
+                        s: scale
+                      });
+        return new OpenLayers.Tile.Image(this, position, bounds, 
+                                             url, this.tileSize);
+    },
+    /** @final @type String */
+    CLASS_NAME: "OpenLayers.Layer.KaMap"
+});