MapTools.org

[maplab-users] Re: Java Console Error

Sacha Fournier sfournier@dmsolutions.ca
Wed, 28 May 2003 10:15:14 -0400
This is a multi-part message in MIME format.
--------------080402020905020007090008
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hi Chandra,

I think I found you problem. Not sure if it is related to the rosa 
applet. Can you take this file and replace your version with it ? Let me 
know if it worked.

Sacha

Chandrasekar Balasubramaniam wrote:
> I get this error while running the Tutorial mapFile.
> chandra
> 
> -----Original Message-----
> From: Sacha Fournier [mailto:sfournier@dmsolutions.ca]
> Sent: Monday, May 26, 2003 8:57 AM
> To: Chandrasekar Balasubramaniam
> Cc: maplab-users-admin@dmsolutions.ca
> Subject: Re: Java Console Error
> 
> 
> Hi Chandra,
> 
> Do you get this error wjile using the demo mapfile ?
> 
> Chandrasekar Balasubramaniam wrote:
> 
>>Hello Everyone
>>  Iam still struggling to find out why no map is displayed in mapbrowser.I
>>found this following error in Java Console.
>>******************
>>stop
>>1st
>>-1
>> Try as PNG
>>init
>>start : Development Version 2001-09-11
>>*******************
>>(Image Type is PNG)
>>  Please could anyone tell me why is this error caused. I found no such
>>error while running mapedit preview.Thanks
>>Revision:
>>* rosa_png.jar had been substituited for rosa.jar
>>
>>regards
>>chandra
>>
>>
> 
> 
> --
> Sacha Fournier
> Applications Developer
> DM Solutions Group
> sfournier@dmsolutions.ca
> tel: 418.696.5056
> fax: 418.696.5056
> 
> www.dmsolutions.ca
> --
> -------------------------------------------------
> /"\  ASCII Ribbon Campaign against HTML
> \ /  email and proprietary format
>   X   attachments.
> / \
> -------------------------------------------------
> 
> 
> 

-- 
Sacha Fournier
Applications Developer
DM Solutions Group
sfournier@dmsolutions.ca
tel: 418.696.5056
fax: 418.696.5056

www.dmsolutions.ca
-- 
-------------------------------------------------
/"\  ASCII Ribbon Campaign against HTML
\ /  email and proprietary format
  X   attachments.
/ \
-------------------------------------------------

--------------080402020905020007090008
Content-Type: text/plain;
 name="drawmap.php"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="drawmap.php"

<?php
/**
 * @project     PHP Utils
 * @revision    $Id: drawmap.php,v 1.29 2003/05/28 14:11:44 sacha Exp $
 * @purpose     This file outputs the current map file to sceen
 * @author      William A. Bronsema, C.E.T. (bronsema@dmsolutions.ca)
 * @copyright
 * <b>Copyright (c) 2002, DM Solutions Group Inc.</b>
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 **/

 /*****************************************************************************
 * The following parameters are REQUIRED when caling this page:
 *
 *      map_session_mode : integer
 *                          0 indicates the map session is read-only,
 *                          1 indicates the map session is read-write.
 *
 *      run_query : integer
 *                          0 indicates a query is NOT to be run,
 *                          1 indicates a query is to be run.
 *
 * The following parameters are OPTIONAL when caling this page:
 * (They MUST be set using session variables of the same name)
 *
 *      gszMapName : string
 *                          Path and filename to the mapfile.  This value can
 *                          be included in the URL if sessions are NOT used
 *                          OR can be set using a DEFINE statment as outlined
 *                          in the code below.
 *
 *      gszCurrentState : string
 *                          The map session current state key.  Defaults to ""
 *                          if not supplied.
 *
 *      gszMapPath : string
 *                          The path to where mapscript "thinks" the mapfile is
 *                          located.  Defaults to the path of the given mapfile
 *                          if not given.
 *
 *      gszPHPMapScriptModName : string
 *                          The mapscript module name.  Default to
 *                          "php_mapscript.so (or .dll)" if not given.
 *
 *      gszMapscriptModule : string
 *                          alternate for gszPHPMapScriptModName.
 *
 *      gszTmpMapPath : string
 *                          The path for the temporary map files in read-write
 *                          mode.  Defaults to the path of the given mapfile if
 *                          not given.
 *
 *      gszQueryLayers : string
 *                          Comma delimited string of layer indexes to query.
 *                          If not supplied and a query is called for then all
 *                          visible layers will be queried.
 *
 *      gszQueryCoords : string
 *                          String of co-ordinates in the following format:
 *                          minx,miny;maxx,maxy
 *                          This value MUST be supplied if a query is performed.
 *
 *****************************************************************************/

/* ============================================================================
 * Un-comment the following code if the mapfile is to be DEFINED instead of in
 * session or URL.
 * ========================================================================= */
//DEFINE( "MAPFILE", "./mymap.map" );

/* ============================================================================
 * Include necessary files
 * ========================================================================= */
include_once( "../session/session.php" );
include_once( "../logger/logfile.php" );
include_once( "../logger/error_manager.php" );
include_once( "../logger/logger.php" );
include_once( "./map_session.php" );
include_once( "./map_navigator.php" );
include_once( "./map_query.php" );

installSessionDirectoryHandler();

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                                                     // always modified
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          // HTTP/1.0

/* ============================================================================
 * setup values
 * ========================================================================= */
// build an array with the HTTP GET or POST parameters
$http_form_vars = (count($_POST) > 0) ?
                  $_POST : ((count($_GET) > 0) ? $_GET : array() );

// determine current page location
$szURI = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

// set max time out
set_time_limit(600);

/* ============================================================================
 * Determine the required values
 * ========================================================================= */
// default values
$szMapName = ( defined( "MAPFILE" ) ? MAPFILE : "?");
$szMapPath = "?";
$szMSModName = "?";
$szTmpMapPath = "?";
$szCurrentState = "?";
$szQueryLayers = "?";
$szQueryCoords = "?";
$oErrorManager = "?";
$szFatalErrorImage = "?";
$szGDVersion = "?";

$nMinX = "?";
$nMinY = "?";
$nMaxX = "?";
$nMaxY = "?";

$nWidth  = "?";
$nHeight = "?";

// check URL if values not yet set
if ( $szMapName == "?" && isset($http_form_vars["gszMapName"]) )
    $szMapName = $http_form_vars["gszMapName"];
if ( $szMapPath == "?" && isset($http_form_vars["gszMapPath"]) )
    $szMapPath = $http_form_vars["gszMapPath"];
if ( $szFatalErrorImage == "?" && isset($http_form_vars["szFatalErrorImage"]) )
    $szFatalErrorImage = $http_form_vars["szFatalErrorImage"];

if ( $nMinX == "?" && isset($http_form_vars["nMinX"]) )
    $nMinX = $http_form_vars["nMinX"];
if ( $nMinY == "?" && isset($http_form_vars["nMinY"]) )
    $nMinY = $http_form_vars["nMinY"];
if ( $nMaxX == "?" && isset($http_form_vars["nMaxX"]) )
    $nMaxX = $http_form_vars["nMaxX"];
if ( $nMaxY == "?" && isset($http_form_vars["nMaxY"]) )
    $nMaxY = $http_form_vars["nMaxY"];

if ( $nWidth == "?" && isset($http_form_vars["nWidth"]) )
    $nWidth = $http_form_vars["nWidth"];
if ( $nHeight == "?" && isset($http_form_vars["nHeight"]) )
    $nHeight = $http_form_vars["nHeight"];

/*
 * REMOVED FOR SECURITY REASONS.
 *
 * TODO: replace with a globprefs include for non-session based apps if
 * required.
 *
if ( $szMSModName == "?" && isset($http_form_vars["gszPHPMapScriptModName"]) )
    $szMSModName = $http_form_vars["gszPHPMapScriptModName"];
if ( $szTmpMapPath == "?" && isset($http_form_vars["gszTmpMapPath"]) )
    $szTmpMapPath = $http_form_vars["gszTmpMapPath"];
if ( $szCurrentState == "?" && isset($http_form_vars["gszCurrentState"]) )
    $szCurrentState = $http_form_vars["gszCurrentState"];
if ( $szQueryLayers == "?" && isset($http_form_vars["gszQueryLayers"]) )
    $szQueryLayers = $http_form_vars["gszQueryLayers"];
if ( $szQueryCoords == "?" && isset($http_form_vars["gszQueryCoords"]) )
    $szQueryCoords = $http_form_vars["gszQueryCoords"];
*/
// determine if in session
$sess_name = "sid";

// only setup session if set
if ( isset( $http_form_vars[$sess_name] ) )
{
    initializeSession($sess_name);
    //    print_r($_SESSION);
    // check for map name
    if ( $szMapName == "?" && isset( $_SESSION["gszMapName"] ) )
        $szMapName = $_SESSION["gszMapName"];

    // check for map path
    if ( $szMapPath == "?" && isset( $_SESSION["gszMapPath"] ) )
        $szMapPath = $_SESSION["gszMapPath"];

    // check for mapscript module name
    if ( $szMSModName == "?" && isset( $_SESSION["gszPHPMapScriptModName"] ) )
        $szMSModName = $_SESSION["gszPHPMapScriptModName"];

    // an alternate session variable name for mapscript module
    if ( $szMSModName == "?" && isset( $_SESSION["gszMapscriptModule"] ) )
        $szMSModName = $_SESSION["gszMapscriptModule"];

    // check for the temp mapfile path
    if ( $szTmpMapPath == "?" && isset( $_SESSION["gszTmpMapPath"] ) )
        $szTmpMapPath = $_SESSION["gszTmpMapPath"];

    // check for the map session key
    if ( $szCurrentState == "?" && isset( $_SESSION["gszCurrentState"] ) )
        $szCurrentState = $_SESSION["gszCurrentState"];

    // check for the query layers
    if ( $szQueryLayers == "?" && isset( $_SESSION["gszQueryLayers"] ) )
        $szQueryLayers = $_SESSION["gszQueryLayers"];

    // check for the query co-ordinates
    if ( $szQueryCoords == "?" && isset( $_SESSION["gszQueryCoords"] ) )
        $szQueryCoords = $_SESSION["gszQueryCoords"];

    // check for the error manager is set
    if ( $oErrorManager == "?" && isset( $_SESSION["gErrorManager"] ) )
        $oErrorManager =& $_SESSION["gErrorManager"];

    // check for GD version
    if ( $szGDVersion == "?" && isset( $_SESSION["gszGDVersion"] ))
        $szGDVersion = $_SESSION["gszGDVersion"];
}

// default the map path if not set
if ( $szMapPath == "?" ) $szMapPath = dirname( $szMapName );

// default mapscript module name as a last resort
if ( $szMSModName == "?" )
{
    // set according to OS
    $szMSModName = ( (PHP_OS == "WINNT" || PHP_OS == "WIN32") ?
                                    "php_mapscript.dll" : "php_mapscript.so" );
}

// default the temp map path as a last resort
if ( $szTmpMapPath == "?" ) $szTmpMapPath = dirname( $szMapName );

// default the statekey as a last resort
if ( $szCurrentState == "?" ) $szCurrentState = "";

// default the query co-ordinates if necessary
if ( $szQueryCoords == "?" ) $szQueryCoords = "0,0";

// check for trailing "/" in path names
$szTmpMapPath = str_replace("\\", "/", $szTmpMapPath);
if (substr($szTmpMapPath, -1) != "/") $szTmpMapPath .= "/";
$szMapPath = str_replace("\\", "/", $szMapPath);
if (substr($szMapPath, -1) != "/") $szMapPath .= "/";
$szMapName = str_replace("\\", "/", $szMapName);

if ( $szGDVersion == "?" )
    $szGDVersion = "gd";

if (!extension_loaded( "gd" ))
{
    $szGDMod = "php_".$szGDVersion.( (PHP_OS=="WINNT" || PHP_OS=="WIN32") ? ".dll" : ".so" );
    dl( $szGDMod );
}

/** DEBUG
echo "MapName: $szMapName<br>";
echo "MapPath: $szMapPath<br>";
echo "ModuleName: $szMSModName<br>";
echo "TmpPath: $szTmpMapPath<br>";
echo "CurrentState: $szCurrentState<br>";
echo "QueryLayers: $szQueryLayers<br>";
echo "QueryCoords: $szQueryCoords<br>";


/*
$aszLog = explode(".", basename($_SERVER["PHP_SELF"]));
$gLogFile = new LogFile( $szTmpMapPath.$aszLog[0]."_drawmap.log", LOG_TO_FILE, true );
$gLogFile->setMaxLogLevel( LOG_ALL );
$gErrorManager = new ErrorManager();
$oLog = new Logger( "General" );
$oLog->setLogFile( $gLogFile );
$oLog->setErrorManager( $gErrorManager );
*/
// ensure that the mapscript module is loaded
if (!extension_loaded("MapScript")) dl($szMSModName);

/* ============================================================================
 * Setup the map session & navigator classes
 * ========================================================================= */
if ( $http_form_vars["map_session_mode"] == 0 )
{
    // create a new map session object in read-only mode
    $oMapSession = new MapSession_R;
}
else
{
    // create a new map session object in read-write mode
    $oMapSession = new MapSession_RW;

    // set the temp directory for the map session
    $oMapSession->setTempDir( $szTmpMapPath );
}

// $oMapSession->setLogFile( $gLogFile );
if ($oErrorManager != "?")
    $oMapSession->setErrorManager( $oErrorManager );

/* ============================================================================
 * Re-instate the previous map state
 * ========================================================================= */
$oMapSession->restoreState( $szCurrentState, $szMapName, $szMapPath );

if ($nMinX != "?" && $nMinY != "?" &&
    $nMaxX != "?" && $nMaxY != "?")
{
    $oMapSession->oMap->setextent($nMinX, $nMinY, $nMaxX, $nMaxY);
}

if ($nWidth != "?" && $nHeight != "?")
{
    $oMapSession->oMap->set("width", $nWidth);
    $oMapSession->oMap->set("height", $nHeight);
}

/* ============================================================================
 * Draw map
 * ========================================================================= */
//$old_error_handler = set_error_handler("userErrorHandler");
//$GLOBALS['gaErrors'] = array();

$aMs = explode(" ", ms_GetVersion());
if (substr($aMs[2], 0, 3) >= "3.7")
{
    // Init error stack
    ms_ResetErrorList();
}

// run query if necessary
if ( isset($http_form_vars["run_query"]) &&
     $http_form_vars["run_query"] == 1 )
{
    // run query
    runQuery( $oMapSession, $szQueryCoords, $szQueryLayers, $szURI );

    // draw map with query
    $oImage = @$oMapSession->oMap->drawQuery();
}
//keymap
else if (isset($http_form_vars["REQUEST"]) &&
         (strcasecmp($http_form_vars["REQUEST"],"KEYMAP") == 0) &&
         isset($http_form_vars["nWidth"]) &&
         isset($http_form_vars["nHeight"]) &&
         isset($http_form_vars["szImage"]) &&
         isset($http_form_vars["dfKeyMapMinX"]) &&
         isset($http_form_vars["dfKeyMapMinY"]) &&
         isset($http_form_vars["dfKeyMapMaxX"]) &&
         isset($http_form_vars["dfKeyMapMaxY"]) &&
         isset($http_form_vars["szOriginalProjection"]) &&
         isset($http_form_vars["szColor"]) &&
         isset($http_form_vars["szOutlineColor"]))
{
  //echo  $oMapSession->oMap->reference->image;
    DrawKeymap($oMapSession,
         $http_form_vars["nWidth"],
         $http_form_vars["nHeight"],
         $http_form_vars["szImage"],
         $http_form_vars["dfKeyMapMinX"],
         $http_form_vars["dfKeyMapMinY"],
         $http_form_vars["dfKeyMapMaxX"],
         $http_form_vars["dfKeyMapMaxY"],
         $http_form_vars["szOriginalProjection"],
         $http_form_vars["szColor"],
         $http_form_vars["szOutlineColor"]);
    exit;
}
//scalebar
else if (isset($http_form_vars["REQUEST"]) &&
         strcasecmp($http_form_vars["REQUEST"],"SCALEBAR") == 0)
{
    $oImage = @$oMapSession->oMap->drawScaleBar();
}
else
{
    // draw map
    $oImage = $oMapSession->oMap->draw();
}

if (substr($aMs[2], 0, 3) >= "3.7")
{
    $oError = ms_GetErrorObj();
    while($oError && $oError->code > 0)
    {
        // Skip errors http
        if ($oError->code != MS_HTTPERR)
            $oErrorManager->setError(ERR_WARNING, $oError->message);

        $oError = $oError->next();
    }
}

if ($oImage == MS_FALSE)
{
    if ($szFatalErrorImage != "?" &&
        ($fh = fopen($szFatalErrorImage, "r")) !== false)
    {
        switch(strtoupper(substr($szFatalErrorImage, -3)))
        {
        case "GIF":
            header("Content-type: image/gif");
            break;
        case "PNG":
            header("Content-type: image/png");
            break;
        case "JPG":
            header("Content-type: image/jpeg");
            break;
        }

        fpassthru($fh);
        exit;
    }
    /*
    else
    {
        $im = @imagecreate ($oMapSession->oMap->width, $oMapSession->oMap->height);
        $background_color = imagecolorallocate ($im, 255, 255, 255);
        $text_color = imagecolorallocate ($im, 233, 14, 91);
        ImageStringWrap($im, "", 10, 10, implode("", getErrors()),
                        $text_color, $oMapSession->oMap->width);
        header("Content-type: image/png");
        imagepng ($im);
        exit;
    }
    */
}
else
{
    /* ============================================================================
     * Determine image support
     * ========================================================================= */
    //there is a problem in MS3.7 with MS_GIF not being defined because the output
    //stuff has all changed.  Hack for now if not defined
    if (!defined( "MS_GIF" ))
        define( "MS_GIF", 0 );
    // check gif first
    $aMs = explode(" ", ms_GetVersion());
    if (substr($aMs[2], 0, 3) < "3.7")
    {
        if (strpos( ms_GetVersion(), "OUTPUT=GIF") > 0 )
        {
            // gif is supportted
            $nImageType = MS_GIF;
        }
        elseif(strpos( ms_GetVersion(), "OUTPUT=PNG") > 0 )
        {
            // png is supportted
            $nImageType = MS_PNG;
        }
        else
        {
            // default to JPEG
            $nImageType = MS_JPEG;
        }

        // set the output type
        switch ($nImageType)
        {
        case MS_GIF:
            header("Content-type: image/gif");
            break;
        case MS_PNG:
            header("Content-type: image/png");
            break;
        case MS_JPEG:
            header("Content-type: image/jpeg");
            break;
        }

        // output map
        $url = $oImage->saveImage("", $nImageType, 0, 0, -1);
    }
    else
    {
        // set the output type
        switch (strtoupper($oMapSession->oMap->imagetype))
        {
        case "GIF":
            header("Content-type: image/gif");
            break;
        case "PNG":
        case "PNG24":
            header("Content-type: image/png");
            break;
        case "JPEG":
            header("Content-type: image/jpeg");
            break;
        }

        // output map
        $url = $oImage->saveImage("");
    }
}
/**
 * This function takes the given query parameters and executes a query on the
 * given map session's map object.
 *
 * @param $oMapSession object - Map Session object.
 * @param $szQueryCoords string - Delimited string of co-ordinates.
 * @param $szQueryLayers string - Comma delimited string of layer indexes.
 * @return boolean - True if successful, False if not.
 **/
function runQuery( $oMapSession, $szQueryCoords, $szQueryLayers )
{
    // create a new map query object
    $oMapQuery = new MapQuery( $oMapSession );

    // process coordinates
    $aszMinMax = explode( ";", $szQueryCoords );
    $adMin = explode( ",", $aszMinMax[0] );
    $adMax = explode( ",", $aszMinMax[1] );

    // initialize var(s)
    $aszLayers = array();
    $oMap = $oMapSession->oMap;

    // check to see if the list of layers has been supplied
    if ( $szQueryLayers != "?" )
    {
        // get array of layers
        $aszLayers = explode( $szQueryLayers );

        // loop and get the name of each layer
        for ( $i=0; $i<$nCount; $i++ )
        {
            // get layer
            $oLayer = $oMap->getLayer( $aszLayers[$i] );

            // update array to be name
            $aszLayers[$i] = $oLayer->name;
        }
    }
    else
    {
        // loop through all layers and add to list of layers to query
        // NOTE:  Layers will only have results generated for them if they
        // have a "template" value set.  The template value does not have
        // to be valid, it could be as simple as "ttt".
        $nCount = $oMap->numlayers;
        for ( $i=0; $i<$nCount; $i++ )
        {
            // get layer name
            $oLayer = $oMap->getLayer( $i );

            // only add if on
            if ( $oLayer->status == MS_ON || $oLayer->status == MS_DEFAULT )
            {
                array_push( $aszLayers, $oLayer->name );
            }
        }
    }

    // commit
    $oMapQuery->setQueryLayersByName( $aszLayers );

    // execute query
    if ( is_numeric( $adMax[0] ) && is_numeric( $adMax[1] ) )
        $oResultSet = $oMapQuery->executeRectQuery( $adMin[0],
                                    $adMin[1],$adMax[0], $adMax[1] );
    else
        $oResultSet = $oMapQuery->executePointQuery( $adMin[0],
                                                        $adMin[1] );

    // return success
    return true;
}

function ImageStringWrap($image, $font, $x, $y, $text, $color, $maxwidth)
{
    $fontwidth = ImageFontWidth($font);
    $fontheight = ImageFontHeight($font);

    if ($maxwidth != NULL)
    {
        $maxcharsperline = floor($maxwidth / $fontwidth);
        $text = wordwrap($text, $maxcharsperline, "\n", 1);
    }

    $lines = explode("\n", $text);
    while (list($numl, $line) = each($lines))
    {
        ImageString($image, $font, $x, $y, $line, $color);
        $y += $fontheight;
    }
}

function DrawKeyMap($oMapSession, $nWidth, $nHeight, $szImage, $dfKeyMapMinX,
                    $dfKeyMapMinY, $dfKeyMapMaxX, $dfKeyMapMaxY,
                    $szOriginalProjection, $szColor="", $szOutlineColor="")
{
        $oMapSession->oMap->reference->set("image", $szImage);
        $oMapSession->oMap->reference->set("status", MS_ON);
        $oMapSession->oMap->reference->set("width", $nWidth);
        $oMapSession->oMap->reference->set("height", $nHeight);

        $szOriginalExtents = $dfKeyMapMinX.",".
                             $dfKeyMapMinY.",".
                             $dfKeyMapMaxX.",".
                             $dfKeyMapMaxY;

/* -------------------------------------------------------------------- */
/*      Here is what is done :                                          */
/*        - Get the current extents of the map and reproject It to      */
/*      the keymap projection                                           */
/*        - use these new projected rectangle to draw the keymap red    */
/*      bbox manually on top of the keymap image.                       */
/* -------------------------------------------------------------------- */
        $aMapExtents[0] = $oMapSession->oMap->extent->minx;
        $aMapExtents[1] = $oMapSession->oMap->extent->miny;
        $aMapExtents[2] = $oMapSession->oMap->extent->maxx;
        $aMapExtents[3] = $oMapSession->oMap->extent->maxy;

        $oNav = new MapNavigator( $oMapSession->oMapSession );
        $adfKeyMapBBoxExtents = $oNav->reprojectExtentFromCenter(
                                     $aMapExtents, $oMapSession->oMap->width,
                                     $oMapSession->oMap->height, $oMapSession->oMap->getProjection(),
                                     $szOriginalProjection);

        if (!file_exists($szImage))
        {
            $_SESSION['gErrorManager']->setError(ERR_WARNING,
                                                 "ERROR: Key map image was not found in KeyMap.widget.php.");
        }
        else //keymap image found
        {
/* -------------------------------------------------------------------- */
/*      try to guess the format of the image using the extension. I     */
/*      thought the imagecreatefromgd would open any gd file but It     */
/*      does not work.                                                  */
/*      Note : there is a gd function exif_imagetype which is           */
/*      supposed to work for version php4.3.0 but was not (at least     */
/*      on the windows binaries downloaded from php site)               */
/* -------------------------------------------------------------------- */
            //$nFileFormat = exif_imagetype($szImage);
            //echo "$FileFormat = $nFileFormat <br>";
            //var_dump(gd_info());

            $szImage = trim($szImage);
            $szFormat = "";

            //is gif ?
            if (imagetypes() & IMG_GIF)
            {
                $szFormat = stristr($szImage, "gif");
                if ($szFormat != "")
                  $szFormat = "gif";
            }


            //is png
            if (imagetypes() & IMG_PNG)
            {
                if ($szFormat == "")
                {
                    $szFormat = stristr($szImage, "png");
                    if ($szFormat != "")
                      $szFormat = "png";
                }
            }

            //is jpeg
            if (imagetypes() & IMG_JPG)
            {
                if ($szFormat == "")
                {
                    $szFormat = stristr($szImage, "jpg");
                    if ($szFormat == "")
                      $szFormat = stristr($szImage, "jpeg");

                    if ($szFormat != "")
                      $szFormat = "jpeg";
                }
            }

            if ($szFormat == "")
            {
                $szValidFormats = "";
                if (imagetypes() & IMG_GIF)
                  $szValidFormats .= "GIF (file_name.gif)";
                if (imagetypes() & IMG_PNG)
                {
                    if ($szValidFormats != "")
                      $szValidFormats .= " , ";
                    $szValidFormats .= "PNG (file_name.png)";
                }
                if (imagetypes() & IMG_JPG)
                {
                    if ($szValidFormats != "")
                      $szValidFormats .= " , ";
                    $szValidFormats .= "JEPG (file_name.jpg)";
                }

                $_SESSION['gErrorManager']->setError(ERR_WARNING,
                                    "ERROR: Could not determine the format of the keymap image : " .$szImage . ". Valid formats are" . $szValidFormats);
            }
            else //format found
            {
                if ($szFormat == "png")
                  $image = imagecreatefrompng($szImage);
                else if ($szFormat == "gif")
                  $image = @imagecreatefromgif($szImage);
                else
                  $image = imagecreatefromjpeg($szImage);

/* -------------------------------------------------------------------- */
/*      get the values in pixels for the rectable bbox.                 */
/* -------------------------------------------------------------------- */
                $dfDeltaGeoX = $adfKeyMapBBoxExtents[0] - $dfKeyMapMinX;
                $dfDeltaGeoY = $adfKeyMapBBoxExtents[1] - $dfKeyMapMinY;

                //minx, min y of the red bbox
                $dfDeltaPixX = $dfDeltaGeoX * $nWidth /
                  ($dfKeyMapMaxX - $dfKeyMapMinX);
                $dfDeltaPixY = $dfDeltaGeoY * $nHeight /
                  ($dfKeyMapMaxY - $dfKeyMapMinY);

                //width, height of the red bbox
                $dfWidthPixBBox = ($nWidth *
                                   ($adfKeyMapBBoxExtents[2] -
                                    $adfKeyMapBBoxExtents[0]))/
                  ($dfKeyMapMaxX - $dfKeyMapMinX);
                $dfHeightPixBBox = ($nHeight *
                                    ($adfKeyMapBBoxExtents[3] -
                                     $adfKeyMapBBoxExtents[1]))/
                  ($dfKeyMapMaxY - $dfKeyMapMinY);

                $nWhite = ImageColorAllocate($image, 255, 255, 255);


/* -------------------------------------------------------------------- */
/*      set the color :                                                 */
/*                                                                      */
/*   - if the "COLOR" parameter is defined, we will use it to           */
/*      draw a filled rectangle.                                        */
/*   - if not and the "OUTLINECOLOR" is defined we will use it          */
/*      to draw a rectangle.                                            */
/*   - if none is defined we will use the red color to draw a rectangle.*/
/* -------------------------------------------------------------------- */
                $nRectColor = -1;
                $bDrawFillRectangle = 0;
                if ($szColor != "")
                {
                    $aColors = explode (" ", $szColor);
                    if ($aColors[0] >= 0 && $aColors[1] >= 0 && $aColors[2] >= 0 &&
                        $aColors[0] <= 255 && $aColors[1] <= 255 && $aColors[2] <= 255)
                    {
                        $nRectColor = ImageColorAllocate($image, $aColors[0], $aColors[1], $aColors[2]);
                        $bDrawFillRectangle = 1;

                        //keep the value for the JSAPI

                        $aOrigColor[0] = $aColors[0];
                        $aOrigColor[1] = $aColors[1];
                        $aOrigColor[2] = $aColors[2];

                    }
                }

                if ($nRectColor < 0)
                {
                    if ($szOutlineColor != "")
                    {
                        $szColor = $szOutlineColor;
                        $aColors = explode (" ", $szColor);
                        if ($aColors[0] >= 0 && $aColors[1] >= 0 && $aColors[2] >= 0 &&
                            $aColors[0] <= 255 && $aColors[1] <= 255 && $aColors[2] <= 255)

                          $nRectColor = ImageColorAllocate($image, $aColors[0], $aColors[1], $aColors[2]);

                        $aOrigOutlineColor[0] = $aColors[0];
                        $aOrigOutlineColor[1] = $aColors[1];
                        $aOrigOutlineColor[2] = $aColors[2];

                    }
                }
                if ($nRectColor < 0)
                {
                    $nRectColor = ImageColorAllocate($image, 255, 0, 0);
                }


/* -------------------------------------------------------------------- */
/*      set the colors to -1 so the refernce object won't draw the bbox.*/
/* -------------------------------------------------------------------- */

                $oMapSession->oMap->reference->color->setRGB(-1, -1, -1);
                $oMapSession->oMap->reference->outlinecolor->setRGB(-1, -1, -1);

/* -------------------------------------------------------------------- */
/*      if the size of the box is less than 3 pixels, draw a cross.     */
/* -------------------------------------------------------------------- */
                if ($dfWidthPixBBox <=3 && $dfHeightPixBBox <=3)
                {
                    $dfMiddleX = ($dfDeltaPixX + ($dfDeltaPixX + $dfWidthPixBBox))/2;
                    $dfMiddleY = (($nHeight - $dfDeltaPixY) + ($nHeight - ($dfDeltaPixY + $dfHeightPixBBox)))/2;
                    imageline($image, ($dfMiddleX -7), $dfMiddleY,
                              ($dfMiddleX -2), $dfMiddleY, $nRectColor);
                    imageline($image, ($dfMiddleX +2), $dfMiddleY,
                              ($dfMiddleX +7), $dfMiddleY, $nRectColor);

                    imageline($image, ($dfMiddleX), ($dfMiddleY -7),
                              ($dfMiddleX), ($dfMiddleY -2), $nRectColor);
                     imageline($image, ($dfMiddleX), ($dfMiddleY +2),
                              ($dfMiddleX), ($dfMiddleY +7), $nRectColor);

                }
                else
                {
/* -------------------------------------------------------------------- */
/*   if the color is set draw a filled rectangle, else draw a rectangle.*/
/* -------------------------------------------------------------------- */
                    if ($bDrawFillRectangle)
                      imagefilledrectangle($image,
                               $dfDeltaPixX,
                               ($nHeight - ($dfDeltaPixY + $dfHeightPixBBox)),
                               ($dfDeltaPixX + $dfWidthPixBBox),
                               ($nHeight - $dfDeltaPixY), $nRectColor);
                    else
                      imagerectangle($image, $dfDeltaPixX,
                               ($nHeight - $dfDeltaPixY),
                               ($dfDeltaPixX + $dfWidthPixBBox),
                               ($nHeight - ($dfDeltaPixY + $dfHeightPixBBox)),
                               $nRectColor);
                }

                if ($szFormat == "png")
                  imagepng($image);
                else if ($szFormat == "gif")
                  imagegif($image);
                else
                  imagejpeg($image);

            } //end else format found

        }//end else //keymap image found

/* -------------------------------------------------------------------- */
/*      draw the image and output it.                                   */
/* -------------------------------------------------------------------- */
        $imgObj = $oMapSession->oMap->drawReferenceMap();

        $szWebImage = $imgObj->saveWebImage();

/* ==================================================================== */
/*      Temp solution for JS API. Set the values and use the            */
/*      drawmap.php functions to draw the keymap.                       */
/* ==================================================================== */
        if (isset($this->maSharedResourceWidgets["CWCJSAPI"]))
        {
            $oMapSession->oMap->reference->set("image", realpath($szImage));

            if (isset($aOrigColor) && count($aOrigColor) == 3)
            {
                $oMapSession->oMap->reference->color->setRGB(
                                 $aOrigColor[0], $aOrigColor[1],
                                 $aOrigColor[2]);
            }
            if (isset($aOrigOutlineColor) && count($aOrigOutlineColor) == 3)
            {
                $oMapSession->oMap->reference->outlinecolor->setRGB(
                                 $aOrigOutlineColor[0],
                                 $aOrigOutlineColor[1],
                                 $aOrigOutlineColor[2]);
            }

            $oMapSession->oMap->reference->extent->setextent(
                                 $dfKeyMapMinX, $dfKeyMapMinY,
                                 $dfKeyMapMaxX, $dfKeyMapMaxY);
        }
}
?>

--------------080402020905020007090008--



This archive was generated by Pipermail.