getting extents for displaying individual states

G-Net Consulting joelf at GNETCONSULTING.COM
Wed Sep 8 12:15:49 PDT 2004


Hello list:

I'm attempting to do the same thing, but keep hitting a hurdle,
and have yet to find a solution in the archives.  Here's my code:

// get our state layer
  $stLayer = $gmfMap->getLayer(1);
  $stLayer->set("status", MS_ON);

  // query the passed state
  $qryLayer = $stLayer->queryByAttributes("STATE", $_GET["state"],
MS_MULTIPLE);

  // find out how many results we found
  $shpCount = $stLayer->GetNumResults();

  // open the layer
  $stLayer->open();

  // find out how many results we found
  for ($i = 0; $i < $shpCount; $i++) {
   // get the results we need from the layer
   $result = $stLayer->getResult($i);

   // get our shape info from the index
   $shpData = $stLayer->getShape($result->tileindex, $result->shapeindex);

      print_r($result);
      // ... (do something with the result)
  }

When I get to the getShape() function, I get an error saying "Invalid
feature id."
I know it has to be something simple.  I, too, am trying to get the extents
for
a passed state to "zoom" into it.  Layer #1 is my states layer.

I'm using PHP/MapScript (4.x+ versions).

TIA!

Joel

----- Original Message -----
From: "Eric Bridger" <eric at GOMOOS.ORG>
To: <MAPSERVER-USERS at lists.umn.edu>
Sent: Monday, August 30, 2004 4:36 PM
Subject: Re: [UMN_MAPSERVER-USERS] getting extents for displaying individual
states


> On Mon, 2004-08-30 at 13:20, Bob Cook wrote:
>> I'm working with a map of the entire United States (including Alaska,
>> Hawaii, and other US territories).
>>
>> I would like to allow users to select an individual state (or territory)
>> from a dropdown list and have the map center around that state, and zoom
>> in to it.
>>
>> Is there any easy way of programmatically setting my map's extents
>> (without simply hard-coding extents for each state) so that it centers
>> on one state?
>>
>> I'm using PHP/Mapscript.
>>
>
> Assuming all your states are in one layer you will need to execute an
> attribute  query against the layer based on the name of the state
> entered.($layer->queryByAttrbute()) The query results will give you
> access to the shape of the state you want. That shape has a bounds
> member which is a rectangle which can be use to set the extent of you
> new map.
> $minx = $shape->{bounds}->{minx};
> etc.
>



More information about the MapServer-users mailing list