[mapguide-users] layerdefinitionfactory with .NET

Zac Spitzer zac.spitzer at gmail.com
Tue Jan 6 03:46:14 EST 2009


you will need to port over this code to .NET

C:\Program Files\MapGuideOpenSource2.0\WebServerExtensions\www\mapviewerphp\layerdefinitionfactory.php

it only supports a subset of the functionality available, to do
anything more try reverse engineering existing layers

z

On Tue, Jan 6, 2009 at 5:54 PM, padmini godavarthi
<godavarthi.padmini at gmail.com> wrote:
>
> Hi,
> Thanks for u r reply.
> but i didn't get u.how can i do with LayerDefinition-1.2.0.xsd ?
>
>
> actually my requirement is that i want to load thematic maps dynamically(c#
> code) based on some condition..
> 1)how can i achieve this?
> can u plz expain me the procedure for how to doit.
>
>
> Thanks and Regards,
> Padmini.
>
>
> Kenneth Skovhede, GEOGRAF A/S wrote:
>>
>> 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
>>>>
>>>>
>>>>
>>>
>>>
>>
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>
>>
>
> --
> View this message in context: http://n2.nabble.com/layerdefinitionfactory-with-.NET-tp1809201p2116477.html
> Sent from the MapGuide Users mailing list archive at Nabble.com.
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>



-- 
Zac Spitzer -
http://zacster.blogspot.com
+61 405 847 168


More information about the mapguide-users mailing list