phpmapscript imagemap attributes

Yewondwossen Assefa assefa at DMSOLUTIONS.CA
Fri Jun 29 05:17:48 PDT 2007


Doug,

  I am not very familiar with imagemap output but what I can certainly 
do is test the output results and see why there is a problem with the 
"coords" output, if you provide me a simple map and data. Note that I 
will do the tests with Mapserver svn (to be 5.0 release).  Note that I 
did a couple of tests with tests data that I have here and the "cooords" 
result seem to be correct.

Later,

Doug Williams wrote:
> Hi All, Jeff, Assefa, 
> 
> I have made a phpmapscript to generate an imagemap for my drawn map so when mousing over the 
> map information about the shp below the mouse cursor is displayed beside the cursor.  I like the way 
> it works,
> 
>   http://www.wildweb.org/imagemap/
> 
> except for a couple of questions!  I am using version 4.8 on linux.
> 
> 1) Some of the polygon coords for the map areas begin with a comma, such as
> 
> <map name="map_test" width="600" height="300">
> <area onMouseOver="handleClick(event,'boxinfo','show it',' NAME '); return false;" 
> onMouseOut="handleClick(event,'boxinfo','hide it',''); return false;" title="" shape="poly" coords=" 
> 96,70, 96,69, 95,68, 105,68, 105,73, 101,73, 101,74, 95,74, 95,73, 93,73, 94,72, 93,72, 93,70, 
> 92,70, 92,69, 93,70, 95,70, 96,70, 96,71, 95,71, 95,72, 96,71, 96,70" />
> <area onMouseOver="handleClick(event,'boxinfo','show it',' NAME '); return false;" 
> onMouseOut="handleClick(event,'boxinfo','hide it',''); return false;" title="" shape="poly" coords=", 
> 95,69" />
> ......
> </map>
> 
> Notice how the coords for the second area begin with a comma.  Does that mean I have a bad shape 
> file?  Those commas seem problematic for some browsers when using the imagemap.  If I delete the 
> commas by brute force and then display the edited html file, the imagemap works properly in all the 
> browsers I have checked, although I guess that the areas with just two coords are not good...
> 
> 
> 2) I cannot figure how to get the attribute data for the shape.  The cgi version of mapserver describes 
> using a template, but where the cgi version describes the use of templates for other tasks, I have not 
> found them useful for phpmapscript version, nor am I using, for this script, the header and footer 
> templates as described in the cgi version imagemap creation tutorial, as setting the OUTPUTFORMAT 
> driver to imagemap along with the correct FORMATOPTIONs generates everything as described in the 
> cgi version tutorial, except I am not understanding how to get the attribute data other than the shp 
> coords.
> 
> The cgi version says the the mode would need to be set to nquery.  I think this means that 
> phpmapscript does a drawQuery().  Attempting this results in:
> 
> Warning: [MapServer Error]: msDrawQueryMap(): Unable to initialize image. in /.../index.php on line 
> 184
> Fatal error: Call to a member function on a non-object in /.../index.php on line 185
> 
> It does not seem necessary to use drawQuery().  draw() provides the coords as desired (w/ the 
> question about the commas above).
> 
>  My belief is that I would grab the attribute data in the FORMATOPTION statement.  Am I on the right 
> track?  Does this capability exist as part of the OUTPUTFORMAT imagemap driver in phpmapscript?
> 
> This is my OUTPUTFORMAT to create the imagemap:
>  OUTPUTFORMAT
>      NAME imagemap
>      DRIVER imagemap
>      FORMATOPTION "MAPNAME=map_test"
>      FORMATOPTION "POLYHREF="
>      FORMATOPTION "POLYMOUSEOUT=handleClick(event,'boxinfo','hide it',''); return false;"
>      FORMATOPTION "POLYMOUSEOVER=handleClick(event,'boxinfo','show it','%NAME%'); return false;"
>      FORMATOPTION "TITLE="
>      MIMETYPE "text/html"
>   END
> 
> The %NAME% was based on the sections discussing cookie variables and such, and NAME just ends 
> up displayed without the % chars.  [NAME] as shown in the cgi version doc produces [NAME] as 
> output.  I have tried escaping the ' char with \, but that results in an error.  Is there a code to put in 
> the FORMATOPTION statement to obtain attribute data?
> 
> Does the layer definition matter?  Here is my layer definition:
>     LAYER
>       NAME "lakes"
>       DATA esri/world/lakes
>       STATUS on
>       PROJECTION
>           "proj=latlong"
>       END #projection
>       TYPE POLYGON
>       METADATA
>         "DESCRIPTION" "Lakes"
>         "RESULT_FIELDS" "NAME SURF_ELEV DEPTH"
>       END
> #      HEADER "lakes_header.html"
> #      FOOTER "lakes_footer.html"
>       TEMPLATE ""
>       CLASS
>         NAME "States"
>         OUTLINECOLOR 0 0 0
>       END
>     END
> 
> I have tried this with a couple of different layers and like the imagemap result (aside from not 
> understanding why some area coords begin with a comma), but without the attribute data I am not 
> sure what to do with it!
> 
> All ideas would be much appreciated,
> 
> Doug
> 


-- 
----------------------------------------------------------------
Assefa Yewondwossen
Software Analyst

Email: assefa at dmsolutions.ca
http://www.dmsolutions.ca/

Phone: (613) 565-5056 (ext 14)
Fax:   (613) 565-0925
----------------------------------------------------------------



More information about the MapServer-users mailing list