[Chameleon] Set map size based on user's screen resolution?

Jennifer Shanks jennifer at greeninfo.org
Fri Mar 24 18:54:18 EST 2006


Hello,

I've designed an application that works well for 1024 x 768 screens, 
but has issues with 800x600 and 1280x1024 resolutions.  To solve 
these problems, I'd like to set a map size and a stylesheet that is 
appropriate to the user's screen resolution when the application is 
loading.  I've tried one approach for doing this, but the timing is 
wrong and I'm hoping that someone will have a better suggestion.

Here's what I've tried so far:
1.  Included a modified version of the MapSize widget in the app that 
also switches the stylesheet when changing map size(see code below).
2.  Created a function (checkScreenSize) that checks the client 
screen resolution and runs the changeMapSize function.
3.  Run checkScreenSize in myOnLoad()

The problem with this approach is the timing.  By putting 
checkScreenSize in myOnLoad(), the page then loads a second time if 
the map size and stylesheet are switched.  Is there a way that I can 
dynamically set the map size before the application loads?

Thanks for any suggestions.  Also, if anyone has any general comments 
on designing an application that works well for multiple screen 
resolutions, I'd love to hear them.

Regards,
Jennifer





function checkScreenSize() {
  var screenW = screen.width;
  var screenH = screen.height;

   if (screenW <=800) {
         changeMapSize(300, 300);
   } else if (screenW >= 1024 && screenW <1280) {
         changeMapSize(410, 410);
   } else if (screenW >= 1280) {
         changeMapSize(600, 600);
   }
  }

function myOnLoad()
{
   // make sure to initialize CWC2 first

   CWC2OnLoadFunction();
       checkScreenSize();

}


         $szJsFunctionName = "changeMapSize";
         $szFunction = <<<EOT
/**
  * {$szJsFunctionName}
  * called when the mapsize value is changed.
  */
function {$szJsFunctionName}(height, width)
{
         curMapSize = getMapSize();
         if (curMapSize[0] != width || curMapSize[1] != height )
         {
             {$this->mszHTMLForm}.SET_MAP_WIDTH.value = width;
             {$this->mszHTMLForm}.SET_MAP_HEIGHT.value = height;

              if (width==300) {
              setActiveStyleSheet('ginfomapsmall');
              }
              if (width==410) {
              setActiveStyleSheet('ginfomapmedium');
              }
              if (width==500) {
              setActiveStyleSheet('ginfomaplarge');
             }

             {$this->mszHTMLForm}.submit();
        }
     return;
}
EOT;





****************************
Jennifer Shanks
GreenInfo Network
116 New Montgomery, Suite 738
San Francisco, CA 94105
(415) 979-0343 x 306
(415) 979-0371 FAX
**GreenInfo has completely re-done our web site
Go to: www.greeninfo.org





More information about the Chameleon mailing list