[mapguide-users] AJAX viewer zoom slider
Alain Lebatard
alain.lebatard at autodesk.com
Fri Apr 7 14:08:38 EDT 2006
Unfortunately onload is not a good place for this because the scales and
other data are initialized only after the onload event of the map frame
complete, so chances are that onload in the parent will be called before
the map is finished initializing.
However there is a variable 'mapInit' which is set to true after the map
is initialized. You could watch for this variable and do your own
initialization when it becomes true. The following snippet would do
var initTimer = setInterval(watchInitialized, 200);
function watchInitialized () {
try {
if(mapFrame.mapInit) {
clearInterval(initTimer);
// .. Now the map is initialized. Can change the scales.
}
}
catch(Exception) {}
}
You'll just need to change the reference to mapFrame according to the
location your script is running from.
There is an alternative way to achieve this and it's to hook the
OnMapLoaded() method in the main frame. This method is called by map
frame to notify that the map is initialized. You could do something like
this (once again change the reference accordingly):
var originalMethod = mainFrame.OnMapLoaded;
mainFrame.OnMapLoaded = MyOnMapLoadedHandler;
function MyOnMapLoadedHandler() {
// .. Now the map is initialized. Can change the scales
// don't forget to call the original method, the main frame relies
// on call to OnMapLoaded() by the map frame
originalMethod ();
}
Alain
-----Original Message-----
From: Jason Birch [mailto:Jason.Birch at nanaimo.ca]
Sent: Friday, April 07, 2006 10:50 AM
To: users at mapguide.osgeo.org
Subject: RE: [mapguide-users] AJAX viewer zoom slider
Thanks Alain.
Should I be placing this in an onload handler for the main frame, or is
there an event that fires when the map is initialized that I can respond
to? The developer guide seems to be focussed mostly on interacting with
the task frame; I couldn't figure it out from that.
Jason
-----Original Message-----
From: Alain Lebatard [mailto:alain.lebatard at autodesk.com]
Sent: Friday, April 07, 2006 09:39
To: users at mapguide.osgeo.org
Subject: RE: [mapguide-users] AJAX viewer zoom slider
Jason,
You can workaround this for now by setting the 'scales' array to a new
value after the map is initialized. For example this will change the
slider to zoom between scales 1:2000 and roughly 1:300000
scales = new Array();
scale = 2000;
for(var i=0; i < 20; i++) {
scales[i] = scale;
scale *= 1.3;
}
mapFrame.scales = scales;
You're free to define the number of scales in the array to make the
slider smoother and to define the increment between scales.
Alain
-----Original Message-----
From: Jason Birch [mailto:Jason.Birch at nanaimo.ca]
Sent: Friday, April 07, 2006 8:12 AM
To: users at mapguide.osgeo.org
Subject: [mapguide-users] AJAX viewer zoom slider
Is it just me, or does having a zoom slider where the top 1/3 is
dedicated to scales greater than 1:1 not make any sense? This appears
to be the case in the maps that I have made that don't have base layers.
The slider function itself appears to use a pretty good algorithm to
zoom progressively, but I think that it might be more useful if:
- It was integer-based, and/or
- It was possible to specify min/max scales for a given map
I put in a defect report for this a while back:
https://mapguide.osgeo.org/servlets/Scarab?id=MG146
In the meantime, can anyone suggest a workaround?
Thanks,
Jason
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
For additional commands, e-mail: users-help at mapguide.osgeo.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
For additional commands, e-mail: users-help at mapguide.osgeo.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
For additional commands, e-mail: users-help at mapguide.osgeo.org
More information about the Mapguide_users
mailing list