[OpenLayers-Users] Ka-Map layer - kaOrigin?
Jeff Dege
jdege at korterra.com
Tue Aug 15 10:12:24 CDT 2006
Among the things I've been trying, to see if I could get acceptable
performance with the map data I've been working with, is to try the
Ka-Map layer, hoping that the tile caches would make a difference.
I've been unable to get the Ka-Map layer to work, and I've been digging
into why.
I'm working with the release-1.0 code.
I'm declaring the layer as:
var baseLayer = new OpenLayers.Layer.KaMap("Cities",
"http://localhost:8080/kamap/tile.php?",
{ 'map': 'gmap', 'g': 'all', 'i': 'png' },
'degrees',
72 );
and as far as I can see, that's correct. At least it matches the
instructions at:
http://mailman-viper.python-hosting.com/pipermail/users/2006-June/000058
.html
The problem is in KaMap.js - the initialize function takes four
arguments:
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
);
}
},
When I stick in an alert to print the values, 'name' = "Cities", 'url' =
"http://localhost:8080/kamap/tile.php?", and 'origin' = "degrees".
You can see that 'this.kaOrigin' is assigned "degrees".
But in the next function, 'this.kaOrigin' is referenced as if it had lat
and long member variables:
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
});
The result is that pX and pY are both assigned values of NaN, and the
URL returned by getFullRequestString() contains "t=NaN&l=NaN", which
results in the KaMap server-side scripts drawing and returning empty
tiles.
>From what I can see, kaOrigin is only referenced in these two locations
- there isn't any other code, anywhere else, that is changing it so that
it contains lat and lon member values.
More information about the Users
mailing list