[ka-Map-users] Ka-Map Spatial Bookmark / Link to View
Peter Giencke
pgiencke at glc.org
Wed Sep 21 17:16:47 EDT 2005
All,
I'm working on a spatial bookmark/'link to view' function (similar to what
google is doing) so that a user can follow a link to get to a 'saved' extent
with certain layers enabled/disabled.
I'm having a problem accessing the current map through oMap in zoomToExtent
function while loading the linkified ka-map instance: "oMap has no
properties."
Below is the pseudocode, followed by the real code for this. My ka-map
testcase for this is here: http://mds.glc.org/kamap_final/htdocs/
Any help/insight/etc into this would be appreciated.....
-pete
//Pseudo
User clicks a button to linkify location (as seen on maps.google.com)
Get extents
Get selected Layers
Create query string of extents + layers
[re]load ka-map with query string (QS)
Ka-Map loads
'Notice' QS pairs
Parses out QS params
Zooms to extent given through QS
*Todo turn on selected layers
//Real
function spatialBookmark() //activated through a link on the main ka-map
page
{
var a = myKaMap.getGeoExtents();
var vLayers = getVisibleLayer();
var oMap = myKaMap.getCurrentMap();
var aLayers = oMap.getLayers();
stringToPass = String(document.location.href) + "?minx=" + a[0] + "&miny"
+ a[1] + "&maxx=" + a[2] + "&maxy=" + a[3] + "&layers=" + aLayers;
window.location = stringToPass;
}
function initialiseGetData() //safalra - set GET variables
{
GET_DATA=new Array();
var getDataString=new String(window.location);
var questionMarkLocation=getDataString.search(/\?/);
if (questionMarkLocation!=-1)
{
getDataString=getDataString.substr(questionMarkLocation+1);
var getDataArray=getDataString.split(/&/g);
for (var i=0;i<getDataArray.length;i++)
{
var nameValuePair=getDataArray[i].split(/=/);
GET_DATA[unescape(nameValuePair[0])]=unescape(nameValuePair[1]);
}
}
}
if(GET_DATA['maxx'] && GET_DATA['minx']) //if extent is set, zoom! Part of
body onload
{
myKaMap.zoomToExtents(getMinx, getMiny, getMaxx, getMaxy);
//todo set selected layers from layer variable
}
//the offending function
var oMap = this.getCurrentMap();
//the geographic center - where we want to end up
var cgX = (maxx+minx)/2;
var cgY = (maxy+miny)/2;
var tmpCellSizeX = (maxx - minx)/this.viewportWidth;
var tmpCellSizeY = (maxy - miny)/this.viewportHeight;
var tmpCellSize = Math.max( tmpCellSizeX, tmpCellSizeY );
var tmpScale = tmpCellSize * oMap.resolution *
inchesPerUnit[oMap.units];
More information about the ka-Map-users
mailing list