Bart !

That clearifies a lot. I didn't know i could save the mapfile.

The problem was that my new class was the last one in the layer. It was after:

CLASS
      NAME "Other Countries"
      EXPRESSION ('[NAME]' ne 'Canada')
      METADATA
      END
      STYLE
        ANGLE 360
          COLOR 200 200 200
          OUTLINECOLOR 100 100 100
        SYMBOL 0
      END
      STYLE
        ANGLE 360
          COLOR 100 100 100
          OUTLINECOLOR 255 255 255
        SYMBOL 0
      END
    END

So i added in php:

$this_layer->moveclassup(2);

Then i changed the expression of the Other Countries Class

$myclass = $this_layer->getClass(2);
$myclass->setExpression("(('[NAME]' ne 'Canada') AND ('[NAME]' ne 'Chad'))");

That was it. Thanks a lot !

Arie


On 4-okt-2006, at 11:25, Eijnden, Bart van den (AGI) wrote:

Arie,

can you save your MAP using

$map->save('<filename>');

?

And post the output LAYER definition?

Also, have you set CLASSITEM on your LAYER?

Best regards,
Bart

-----Oorspronkelijk bericht-----
Van: Arie Mijnlieff [mailto:[EMAIL PROTECTED]
Verzonden: woensdag 4 oktober 2006 11:03
Aan: Eijnden, Bart van den (AGI)
CC: [email protected]
Onderwerp: Re: [UMN_MAPSERVER-USERS] Mapscript adding class with PHP


Bart !

My code is now:

$this_layer = $map->getLayerByName('countries');

$new_class = ms_newClassObj($this_layer);

$new_class->setExpression('Russia');
$new_class->set('name','Russia');
$new_class->label->outlinecolor->setRGB(255,255,255);
$new_class->label->set(minfeaturesize,40);
$new_style = ms_newStyleObj($new_class);
$new_style->color->setRGB(100,100,100);
$new_style->outlinecolor->setRGB(255,255,255);

$img=$map->draw();

$img->saveImage("/var/www/html/mapdemo/images/test.jpg");

Doesnt work however..

I really appreciate your help !

Arie

On 4-okt-2006, at 10:06, Eijnden, Bart van den (AGI) wrote:

Arie,

you can best use a style object. Example:

    $oClass = ms_newClassObj($oLayer);
    $oStyle = ms_newStyleObj($oClass);

    $aColor[0] = 0;
    $aColor[1] = 0;
    $aColor[2] = 0;
    if ($HTTP_FORM_VARS["COLOR"]!= "")
      $aColor = explode(",", $HTTP_FORM_VARS["COLOR"]);

    $oStyle->color->setRGB($aColor[0], $aColor[1], $aColor[2]);

Best regards,
Bart

-----Oorspronkelijk bericht-----
Van: UMN MapServer Users List
[mailto:[EMAIL PROTECTED] Arie Mijnlieff
Verzonden: woensdag 4 oktober 2006 10:06
Aan: [email protected]
Onderwerp: Re: [UMN_MAPSERVER-USERS] Mapscript adding class with PHP


Hi Murat !

No this doesnt solve the problem:

PHP Fatal error:  Call to a member function on a non-object in /var/
www/html/mapdemo/bulgaria/test.php on line 13

color is not an attribute of the class object.. Maybe i should try to
define a new layer with php for each country that i would like to
paint..

Thanks for your suggestion !

Arie

On 4-okt-2006, at 8:38, Murat BEYHAN wrote:

Hi Arie,

please try the following in yor php script,
I'm new on PhpMapscript so. I hope this solve your problem





$new_class = ms_newClassObj($this_layer);
$new_class->setExpression('Australia');
$new_class->set('name','Australia');
  $new_class->color->setRGB(255,0,0);////////////////here you
should add
$new_class->label->outlinecolor->setRGB(255,255,255);
$new_class->label->set(minfeaturesize,40);

regards

Murat

On Tue, 3 Oct 2006 21:35:33 +0200, Arie Mijnlieff wrote
Hi,

I want to show countries in my world map based on a form with
checkboxes.

If I check Argentina and Australia i would like to show both
countries in red, whereas the other are in another color. If i
change  the selection in Australia and India i would like Australia
and India  to be red.

I have a .map file with a layer called countries. In that layer i
have a class:

    CLASS                   # Start of CLASS object
       NAME 'Argentina'
       EXPRESSION 'Argentina'
       OUTLINECOLOR 100 100 100
          COLOR 255 255 150
       LABEL
           SIZE LARGE
           OUTLINECOLOR 255 255 255
           MINFEATURESIZE 40
       END
     END                     # End of CLASS object

So i thought if Australia is checked, i add a class object to my
layer using php with the same colors:

$new_class = ms_newClassObj($this_layer);
$new_class->setExpression('Australia');
$new_class->set('name','Australia');
$new_class->label->outlinecolor->setRGB(255,255,255);
$new_class->label->set(minfeaturesize,40);

Australia will not be red however. I do not understand how i can
change the color of my new class. I succeeded only to change the
color of the label.. What do i do wrong ?

If i change the color of an existing class i can see that change
however..

$my_class = $this_layer->getClass(0);
$my_class->setExpression('Australia');
$my_class->set('name','Australia');

Any help will be appreciated !!

Arie

-- This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


--
Open WebMail Project (http://openwebmail.org)


-- This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



Disclaimer
********************************************************************* *
**
Aan dit bericht kunnen geen rechten worden ontleend. Dit bericht is
uitsluitend bestemd voor de geadresseerde. Als u dit bericht per abuis
hebt ontvangen, wordt u verzocht het te vernietigen en de afzender te
informeren. Wij adviseren u om bij twijfel over de juistheid of de
volledigheid van de mail contact met afzender op te nemen.

This message shall not constitute any rights or obligations.
This message is intended solely for the addressee.
If you have received this message in error, please delete it and
notify the sender immediately. When in doubt whether this message
is correct or complete, please contact the sender.
********************************************************************* *
**





Disclaimer
********************************************************************** **
Aan dit bericht kunnen geen rechten worden ontleend. Dit bericht is
uitsluitend bestemd voor de geadresseerde. Als u dit bericht per abuis
hebt ontvangen, wordt u verzocht het te vernietigen en de afzender te
informeren. Wij adviseren u om bij twijfel over de juistheid of de
volledigheid van de mail contact met afzender op te nemen.

This message shall not constitute any rights or obligations.
This message is intended solely for the addressee.
If you have received this message in error, please delete it and
notify the sender immediately. When in doubt whether this message
is correct or complete, please contact the sender.
********************************************************************** **



Reply via email to