<br><font size=2 face="sans-serif">List,</font>
<br><font size=2 face="sans-serif">I'm trying to implement a zoom to point
function, where by a user specifies a point (reach) number, clicks on a
submit button, and the map will zoom to the point.</font>
<br><font size=2 face="sans-serif">However, I'm having trouble with a GetShape
statement. &nbsp;Something isn't right. &nbsp;The mapserver stops at this
particular line of code:</font>
<br><font size=2 face="sans-serif"><br>
$oShape = $oReachLayer-&gt;getShape($oResult-&gt;tileindex,$oResult-&gt;shapeindex);</font>
<br>
<br><font size=2 face="sans-serif">Below is my code for this feature. &nbsp;You'll
see that I still have to modify the code for zooming to a point rather
than a polygon, but I haven't got that far yet.</font>
<br><font size=2 face="sans-serif">I've searched the MapServer list and
posted, but with no luck. &nbsp;Using MS 4.2, php 4.3.4.</font>
<br>
<br><font size=2 face="sans-serif">Thanks in advance.</font>
<br>
<br><font size=2 face="sans-serif">Kevin </font>
<br>
<br><font size=2 face="sans-serif"><b>Code:</b></font>
<br>
<br><font size=2 face="sans-serif">if (isset( $http_form_vars[&quot;doReachZoom&quot;])
&amp;&amp; ($http_form_vars[&quot;doReachZoom&quot;] &gt; &quot;0&quot;
))</font>
<br><font size=2 face="sans-serif">{</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //echo
&quot;zoom to reach&quot;;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
the reach number to query for</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $szReachNumber
= $http_form_vars[&quot;reachnum&quot;];</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
the current extents will be the default if we fail.</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $oExtents
= $oMapSession-&gt;oMap-&gt;extent;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $oldExtents=$oExtents;</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //first
we need a handle on the layer, let's assume that we have</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //it's
name</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $oReachLayer
= $oMapSession-&gt;oMap-&gt;getLayerByName( &quot;Reaches&quot; );</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $oReachLayer-&gt;queryByAttributes(&quot;REACH&quot;,
$szReachNumber, MS_SINGLE );</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //echo
(&quot;$szReachNumber&quot;);</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $results
= $oReachLayer-&gt;getNumResults();</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //echo
(&quot;-- $results --&quot;);</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //now
check to see if there are any results?</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; if
($oReachLayer-&gt;getNumResults() &gt; 0 )</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; {</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; //echo &quot; results2&quot;;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; //at least one result, assume only one for
this example</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $oResult = $oReachLayer-&gt;getResult(0);</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; //oResult is a resultCacheMemberObj</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $oReachLayer-&gt;open($oMapSession-&gt;oMap-&gt;shapepath);</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; <b>echo &quot; results3&quot;; &nbsp; // THIS
IS ECHOED</b></font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; <b>$oShape = $oReachLayer-&gt;getShape($oResult-&gt;tileindex,$oResult-&gt;shapeindex);
// &nbsp;IS THERE A PROBLEM WITH THIS LINE???</b></font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; <b>echo &quot; results4&quot;; &nbsp;// THIS
IS NOT ECHOED </b></font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $oExtents = $oShape-&gt;bounds;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; echo &quot; results5&quot;;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; //$oShape-&gt;free();</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; //at this point we might add a buffer to the
extents</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nXBuffer = ( $oExtents-&gt;maxx - $oExtents-&gt;minx
)*0.05;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nYBuffer = ( $oExtents-&gt;maxy - $oExtents-&gt;miny
)*0.05;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nMinX = $oExtents-&gt;minx - $nXBuffer;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nMaxX = $oExtents-&gt;maxx + $nXBuffer;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nMinY = $oExtents-&gt;miny - $nYBuffer;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $nMaxY = $oExtents-&gt;maxy + $nYBuffer;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; $oExtents-&gt;setextent( $nMinX, $nMinY, $nMaxX,
$nMaxY );</font>
<br><font size=2 face="sans-serif">echo &quot;oExtents have been set&quot;;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;else{</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;
echo &quot; no results&quot;;}</font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
now use $oMapNavigator to navigate to the parcel</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
location. There are two useful options now. We</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
can zoom to a rectangle which we have calculated or</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
to a point and scale. Let's assume we have calculated</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
a rectangle and put a buffer around it if necessary.</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //$width=$oMapSession-&gt;oMap-&gt;width;</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;$height=$oMapSession-&gt;oMap-&gt;height;</font>
<br>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;$px1=$width/($oldExtents-&gt;maxx-$oldExtents-&gt;minx)*($oExtents-&gt;minx-$oldExtents-&gt;minx);</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;$px2=$width/($oldExtents-&gt;maxx-$oldExtents-&gt;minx)*($oExtents-&gt;maxx-$oldExtents-&gt;minx);</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;$py1=$height/($oldExtents-&gt;maxy-$oldExtents-&gt;miny)*($oldExtents-&gt;maxy-$oExtents-&gt;maxy);</font>
<br><font size=2 face="sans-serif">// &nbsp; &nbsp; &nbsp; &nbsp;$py2=$height/($oldExtents-&gt;maxy-$oldExtents-&gt;miny)*($oldExtents-&gt;maxy-$oExtents-&gt;miny);</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //$oMapNavigator-&gt;zoomRectangle($px1,
$py2, $px2, $py1);</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; //
alternately if it's a point and a scale ...</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; $oMapNavigator-&gt;zoomScale(
1000, 100, 100 );</font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif">else</font>
<br><font size=2 face="sans-serif">{</font>
<br><font size=2 face="sans-serif">echo &quot;reach is null or negative&quot;;</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<p><font size=2 color=blue face="Times New Roman">______________________________</font><font size=5 color=blue face="Times New Roman"><br>
Baird </font><font size=2 color=blue face="Times New Roman"><i><br>
Innovation, Excellence, &amp; Service</i></font><font size=3> </font><font size=2 color=blue face="Times New Roman"><i><br>
Oceans, Lakes &amp; Rivers</i></font><font size=2 face="Times New Roman"><b><br>
Kevin Grootendorst </b><br>
905-845-5385 phone &nbsp; &nbsp;905-845-0698 fax<br>
627 Lyons Lane, Suite 200<br>
Oakville, Ontario, Canada L6J 5Z7 </font><font size=2 color=blue face="Times New Roman"><u><br>
</u></font><a href=mailto:kgrootendorst@baird.com><font size=2 color=blue face="Times New Roman"><u>mailto:kgrootendorst@baird.com</u></font></a><font size=3>
&nbsp; &nbsp;</font><a href=http://www.baird.com/ target=_blank><font size=2 color=blue face="Times New Roman"><u>http://www.baird.com/</u></font></a><font size=3>
</font><font size=5 color=blue face="Times New Roman"><br>
______________________________</font>