[mapserver-users] Perl or Java - Zoom and Pan

Steve Lime steve.lime at dnr.state.mn.us
Thu Mar 21 14:40:32 EST 2002


Note that I intend to keep php and the SWIGed versions of MapScript in
sync. It's just that
sometimes one group adds something to one and not the other (and vice
versa). We're working
on it...

Steve

Stephen Lime
Data & Applications Manager

Minnesota DNR
500 Lafayette Road
St. Paul, MN 55155
651-297-2937

>>> "Lowell Filak" <lfilak at medinaco.org> 03/21/02 08:11AM >>>
It's not elegant but it works.
Lowell F.

package zoom_map;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(zoom_map);
use mapscript;
use CGI qw(:standard *table);
use CGI::Carp qw(fatalsToBrowser set_message);
use main_page;
sub zoom_map {
  $|=1;
  #
  # Declare all variables.
  my $ppn = '';
  my $mode = 'test';
  my $zmdir = 0;
  my $zmsize = 5;
  my $imgszx = 1;
  my $imgszy = 1;
  my $minx = 1;
  my $miny = 1;
  my $maxx = 2;
  my $maxy = 2;
  my $dx = 1;
  my $dy = 1;
  my $map = 'mche.map';
  my $svquery = 'true';
  my $mapext = 'shapes';
  my $pickx = 1;
  my $picky = 1;
  my $imap = '';
  my $imapeminx = 0;
  my $imapeminy = 0;
  my $imapemaxx = 1;
  my $imapemaxy = 1;
  $imapeminxf = 0;
  $imapeminyf = 0;
  $imapemaxxf = 1;
  $imapemaxyf = 1;
  #
  # Parse input from calling cgi.
  ($ppn) = shift;
  ($mode) = shift;
  ($zmdir) = shift;
  ($zmsize) = shift;
  ($imgszx) = shift;
  ($imgszy) = shift;
  ($minx) = shift;
  ($miny) = shift;
  ($maxx) = shift;
  ($maxy) = shift;
  ($dx) = shift;
  ($dy) = shift;
  ($map) = shift;
  ($svquery) = shift;
  ($mapext) = shift;
  ($pickx) = shift;
  ($picky) = shift;
  ($imap) = shift;
  #
  # Check the mapextent.
  if (($dx > 100000) & ($zmdir == -1)) {
    print "\n<br>Map Extent too Large.";
    $zmdir = 0;
    return;
  }
  elsif (($dx < 200) & ($zmdir == 1)) {
    $zmdir = 0;
    return;
  }
  if ($zmdir == 0) {
    if (($minx < 2083000) | ($miny < 475000) | ($maxx > 2231000) |
($maxy > 595000)) {
      print print "\n<br><b>Current Pan Invalid!???";
      print "\n<br>Please Press Back and Retry...</b>";
      return;
    }
  }
  #
  # Is this zoom in, out, or pan.
  if ($zmdir == 1) {
    my $ndx = ($dx / $zmsize) / 2;
    my $ndy = ($dy / $zmsize) / 2;
    my $nminx = $pickx - $ndx;
    my $nminy = $picky - $ndy;
    my $nmaxx = $pickx + $ndx;
    my $nmaxy = $picky + $ndy;
   
&main_page($zmdir,$zmsize,$imgszx,$imgszy,$nminx,$nminy,$nmaxx,$nmaxy,$map,$svquery,$mapext);
  }
  elsif ($zmdir == -1) {
    my $ndx = ($dx * $zmsize) / 2;
    my $ndy = ($dy * $zmsize) / 2;
    my $nminx = $pickx - $ndx;
    my $nminy = $picky - $ndy;
    my $nmaxx = $pickx + $ndx;
    my $nmaxy = $picky + $ndy;
   
&main_page($zmdir,$zmsize,$imgszx,$imgszy,$nminx,$nminy,$nmaxx,$nmaxy,$map,$svquery,$mapext);
  }
  elsif ($zmdir == 0) {
    my $ndx = $dx / 2;
    my $ndy = $dy / 2;
    my $nminx = $pickx - $ndx;
    my $nminy = $picky - $ndy;
    my $nmaxx = $pickx + $ndx;
    my $nmaxy = $picky + $ndy;
   
&main_page($zmdir,$zmsize,$imgszx,$imgszy,$nminx,$nminy,$nmaxx,$nmaxy,$map,$svquery,$mapext);
  }
  else {
    print "\n<br><b>Current Zoom Mode Unknown!???";
    print "\n<br>Please Press Back and Retry...</b>";
  }
}

The following message was sent by "Harald Wehr" <hwehr at hs-harz.de> on
Thu, 21 Mar 2002 07:18:20 +0100.

> Actually i want to zoom and pan in java. In PHP there is a function 
> called "zoompoint" in the mapObj.
> 
> As Perl and Java don't have this function it seems to me that i have
to 
> implement it myself.
> 
> Has anyone already done this in perl or java?
> 
> Harald




More information about the mapserver-users mailing list