Zoom - php help

Kevin Grootendorst kgrootendorst at BAIRD.COM
Thu Feb 3 07:42:36 PST 2005


Below is code I've used for zooming to a polygon. Can anyone point me in
the right direction for zooming to a point feature?  I'm unclear as to how
I determine and set the extents for a point.
Thanks.

if (isset( $http_form_vars["doParcelZoom"]) && ($http_form_vars
["doParcelZoom"] > "0" ))
{
 echo "zoom to parcel";

 // the Parcel number to query for
 $szParcelNumber = $http_form_vars["parcelnum"];
 echo "$szParcelNumber";
 // the current extents will be the default if we fail.
 $oExtents = $oMapSession->oMap->extent;
 $oldExtents=$oExtents;

 //get layer name
 $oParcelLayer = $oMapSession->oMap->getLayerByName( "ParcelData" );

 $oParcelLayer->queryByAttributes("PIN", $szParcelNumber,
MS_SINGLE );

 $results = $oParcelLayer->getNumResults();
 //echo "$results";
 //now check to see if there are any results
 if ($oParcelLayer->getNumResults() > 0 )
 {
  echo " results2";
  //at least one result, assume only one for this example
  $oResult = $oParcelLayer->getResult(0);

  //oResult is a resultCacheMemberObj
  //$oParcelLayer->open($oMapSession->oMap->shapepath);
  $oParcelLayer->open();
  echo " results3";
  $oShape = $oParcelLayer->GetShape($oResult-
>tileindex,$oResult->shapeindex); //**** problem?
  echo " results4";
  $oExtents = $oShape->bounds;
  echo " results5";
  $oShape->free();

  //at this point we might add a buffer to the extents
  $nXBuffer = ( $oExtents->maxx - $oExtents->minx )*5;
  $nYBuffer = ( $oExtents->maxy - $oExtents->miny )*5;
  $nMinX = $oExtents->minx - $nXBuffer;
  $nMaxX = $oExtents->maxx + $nXBuffer;
  $nMinY = $oExtents->miny - $nYBuffer;
  $nMaxY = $oExtents->maxy + $nYBuffer;
  //$nMinX = $oExtents->minx;
  //$nMaxX = $oExtents->maxx;
  //$nMinY = $oExtents->miny;
  //$nMaxY = $oExtents->maxy;
  $oExtents->setextent( $nMinX, $nMinY, $nMaxX, $nMaxY );
 //echo "$nMinX";
 //echo "$nMaxX";
 //echo "$nMinY";
 //echo "$nMaxY";
 }
 else{
  echo " no results";}



 $width=$oMapSession->oMap->width;
 $height=$oMapSession->oMap->height;

 //set map in pixel units
 $px1=$width/($oldExtents->maxx-$oldExtents->minx)*($oExtents->minx-
$oldExtents->minx);
 $px2=$width/($oldExtents->maxx-$oldExtents->minx)*($oExtents->maxx-
$oldExtents->minx);
 $py1=$height/($oldExtents->maxy-$oldExtents->miny)*($oldExtents-
>maxy-$oExtents->maxy);
 $py2=$height/($oldExtents->maxy-$oldExtents->miny)*($oldExtents-
>maxy-$oExtents->miny);

 $oMapNavigator->zoomRectangle($px1, $py2, $px2, $py1);
 //$oMapNavigator->zoomRectangle($nMinX, $nMaxX, $nMinY, $nMaxY);
 //$oMapNavigator->zoomRectangle($px1, $py1, $px2, $py2);
}
else
{
echo "parcel is null or negative";
}



More information about the MapServer-users mailing list