[mapguide-users] layerdefinitionfactory with .NET

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Wed Dec 31 05:25:36 EST 2008


I don't know where or what the LayerDefinitionFactory is, but to add 
thematic rules
you simply add a "PointRuleType", "LineRuleType" or "AreaRuleType" to the
"PointTypeStyleType", "LineTypeStyleType" or "AreaTypeStyleType" 
collection of the
desired scalerange.

eg:
PointRuleType prt = new PointRuleType();
prt.Filter = "\"ID\" > 100";
//TODO: Set style and other properties

LayerDefinition ldef; //<-- Assign this
VectorLayerDefintionType vldef = ldef.Item as VectorLayerDefinitionType;
//If you have more than just points, you must itterate the "Items" to 
find the right one
PointTypeStyleType pst = vldef.VectorScaleRange[0].Items[0] as 
PointTypeStyleType;
pst.PointRule.Add(prt);

Regards, Kenneth Skovhede, GEOGRAF A/S



padmini godavarthi skrev:
> Hi,
> i want to do thematic mapping in .net .for that i suppose to use
> LayerDefinitionFctory .
> how to use it in .net?
>
> can u send me the code in .net
>
>
> Thanks and Regards,
> Padmini
>
>
> m.karam wrote:
>   
>> Hi,
>>
>> Many thanks for you Jackie
>> it works good
>>
>> Regards
>>
>> Karam
>>
>>
>> Jackie Ng wrote:
>>     
>>> Hi there,
>>>
>>> There is no .NET equivalent to LayerDefintionFactory. You'll have to port
>>> it over to .net.
>>>
>>> layerdefinitionfactory.php simply takes a bunch of xml templates in the
>>> "viewerfiles" directory of your web extensions install folder and fills
>>> in the blanks with the parameters you provide.
>>>
>>> example of CreateAreaRule() in .net:
>>>
>>> class LayerDefinitionFactory
>>> {
>>>     ...
>>>
>>>     public static string CreateAreaRule(string legendLabel, string
>>> filterText, string foreGroudColor)
>>>     {
>>>         StreamReader reader = new StreamReader("path/to/arearule.templ");
>>>         string areaRuleXml = reader.ReadToEnd();
>>>         string [] values = new string[] { legendLabel, filterText,
>>> foreGroundColor };
>>>         areaRuleXml = Substitute(areaRuleXml, values);
>>>         return areaRuleXml;
>>>     }
>>>     
>>>     ...
>>>     
>>>     static String Substitute(String templ, String[] vals)
>>>     {
>>>         StringBuilder res = new StringBuilder();
>>>         int index = 0, val = 0;
>>>         bool found;
>>>         do
>>>         {
>>>             found = false;
>>>             int i = templ.IndexOf('%', index);
>>>             if(i != -1)
>>>             {
>>>                 found = true;
>>>                 res.Append(templ.Substring(index, i - index));
>>>                 if(i < templ.Length - 1)
>>>                 {
>>>                     if(templ[i+1] == '%')
>>>                         res.Append('%');
>>>                     else if(templ[i+1] == 's')
>>>                         res.Append(vals[val ++]);
>>>                     else
>>>                         res.Append('@');    //add a character illegal in
>>> jscript so we know the template was incorrect
>>>                     index = i + 2;
>>>                 }
>>>             }
>>>         } while(found);
>>>         res.Append(templ.Substring(index));
>>>         return res.ToString();
>>>     }
>>> }
>>>
>>>
>>> Other CreateXXX functions are variations on the above example.
>>>
>>> Regards,
>>>
>>> - Jackie
>>>
>>>
>>> m.karam wrote:
>>>       
>>>> Hi everybody
>>>>
>>>> How can I use the (layerdefinitionfactory.php) API functions witn .NET ?
>>>>
>>>> thanks
>>>>
>>>> Karam
>>>>
>>>>         
>>>       
>>     
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20081231/b4cfe986/attachment.html


More information about the mapguide-users mailing list