[mapguide-users] layerdefinitionfactory with .NET

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Mon Jan 5 07:45:27 EST 2009


0)
The classes named below can refer either to MaestroAPI classes or Xml 
tag names.
The code given is for the MaestroAPI.
There is no equivalent for the official API, and you will have to do 
this using Xml
manipulation.

Search for a file called LayerDefinition-1.2.0.xsd for a description of 
such a document.

1)
Xsd:
C:\Program 
Files\MapGuideOpenSource2.0\Server\Schema\LayerDefinition-1.2.0.xsd
MaestroAPI:
http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI

2)
I have shown that in the sample code.

3)
I have included code?

Regards, Kenneth Skovhede, GEOGRAF A/S



padmini godavarthi skrev:
> Hi,
> Thanks for u r reply.But i didnt find PointRuleType anywhere?
> 1) where can i find this?
> 2) And how to apply properties to the layer?
> 3) can u send me the code. 
> so that it will be very helpful.
>
>
>
> Thanks and Regards,
> Padmini
>
>
>
> Kenneth Skovhede, GEOGRAF A/S wrote:
>   
>> 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
>>>>>>
>>>>>>         
>>>>>>             
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>
>>
>>     
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20090105/7d629d3b/attachment.html


More information about the mapguide-users mailing list