[mapserver-users] Pre-defined Zoom In/Zoom Out buttons...
Puneet Kishor
pkishor at GeoAnalytics.com
Fri Sep 27 09:14:59 PDT 2002
On Friday, September 27, 2002, at 09:45 AM, Mike Smith wrote:
> Sorry to bother everyone with this, I know this has been addressed
> before in the archives, but I can't seem to find it when I search > them.
>
> I'm trying to enable a Zoom In/Zoom Out bar along side my map (kinda
> like Mapquest or Yahoo maps) where there are buttons that either zoom
> the user in or out to pre-determined levels. I've got Javascript code
> that zooms in and out ok, but the logic is what's throwing me off. I
> want the bottom button to always be the same view, not zoom them out
> 15 times from whatever their present view is.... it should zoom them
> out 15 times from full extent. I want "full extent" to be the base
> and each button whether it's a zoom in or out button needs to always
> zoom them to the same factor relative to full extent, not their
> current view...make sense? I know I've seen a Mapserver page before
> that had this little zoom bar that I'm describing, but I can't
> remember where I saw it. Anybody have a web page that does this? Or
> example code that handles the logic of pre-defined absolute zoom
> levels (as opposed to the relative ones that the CGI variable "zoom"
> sets)?
>
> Thanks
>
you need to set the new zoomextent relative to the maxextent (as you
correctly surmised above).
Here are the steps you would take via mapscripting (dunno about cgi) --
1. You want to send a point back to the server relative to which you
want to zoom (in or out). For example, if the user has already been
clicking on the map and managed to navigate her way to some specific
section of the map, and now clicks on your zoom bar, you want to zoom
relative to the current extent (the user will be very annoyed if you
zoom relative to the actual center of the image). On the other hand, if
the user has not yet clicked on the map, you want to zoom relative to
the actual center of the image. You can determine what the case is by
embedding user clicks in hidden form fields... if those form fields are
empty then the user hasn't clicked yet, etc.
2. Create your zoombar using a graphic or whatever, and use Javascript
to send back a zoomfactor... zooming in will increase the zoomfactor,
and vice versa.
3. Use the point you have sent back and the zoomfactor you have sent
back to zoom from the max extent. You can easily grab the maxextent
using mapscript, or you can even grab it once and then either insert it
in session vars or shuttle it back and forth using form vals.
pk/
More information about the MapServer-users
mailing list