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
