[mapguide-users] Load Layer Definition XML
clarkie342
f2000342 at gmail.com
Mon Mar 9 19:45:11 EDT 2009
I have couple of questions regarding use of Maestro API
>> when using Maestro API, am I technically replacing MGE Web Tier API?
>> Should I be replacing
MapGuideApi.MgInitializeWebTier(CommonUtilities.configPath)
Dim userInfo As MgUserInformation = New MgUserInformation(session)
Dim Mysiteconn As MgSiteConnection = New MgSiteConnection()
Mysiteconn.Open(userInfo)
with
conn = New LocalNativeConnection("webconfig.ini", username, password, "en")
or do I still need both?
Thanks.
Kenneth Skovhede, GEOGRAF A/S wrote:
>
> Yes, I run it with MGE 2009.
>
> Regards, Kenneth Skovhede, GEOGRAF A/S
>
>
>
> clarkie342 skrev:
>> Hi,
>>
>> Does MaestroAPI work with Mapguide Enterprise?
>> Thanks.
>>
>>
>> wordsy wrote:
>>
>>> Thanks for the quick response. It was exactly what I needed.
>>>
>>> Cheers!
>>>
>>>
>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>
>>>> If you want to modify the layer xml, you just read the xml like this:
>>>>
>>>> MgByteReader rd = resourceSrvc.GetResource(new
>>>> MgResourceIdentifier("Library://layer.LayerDefinition"));
>>>>
>>>> If you want to work seriously with layerdefinitions (and the MapGuide
>>>> xml), I have created the MaestroAPI,
>>>> which lets you manipulate classes instead of xml:
>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI
>>>>
>>>> Using the MaestroAPI, you can just do:
>>>> LayerDefinition ldef =
>>>> con.GetLayerDefinition("Library://layer.LayerDefinition");
>>>> VectorLayerDefinition vldef = ldef.Item as VectorLayerDefinition;
>>>> foreach(VectorScaleRangeType vsr in vldef.ScaleRanges)
>>>> foreach(object o in vsr.Item)
>>>> if (o is PointTypeStyleType)
>>>> ; //Layer has points
>>>> else if (o is LineTypeStyleType)
>>>> ; //Layer has lines
>>>> else if (o is AreaTypeStyleType)
>>>> ; //Layer has polygons
>>>>
>>>>
>>>> Also, changing a style is easy, eg:
>>>> PointTypeStyleType point = vldef.ScaleRanges[0].Item[0] as
>>>> PointTypeStyleType;
>>>> p.PointRule[0].Label.BackgroundColor = System.Drawing.Color.Red;
>>>>
>>>> Then save:
>>>> con.SaveResource(ldef);
>>>>
>>>> All is fully intellisense supported in VS.
>>>>
>>>>
>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>
>>>>
>>>>
>>>> wordsy skrev:
>>>>
>>>>> Hey Everyone;
>>>>>
>>>>> Fairly new to MGOS.
>>>>>
>>>>> Here is what I am trying to do.
>>>>>
>>>>> I have a map with many Layers. One of my requirements is to allow
>>>>> users
>>>>> to
>>>>> be able to change the layer styles via a web wizard. The user will be
>>>>> able
>>>>> to adjust certain styles for line/point/polygon (surface). Ie font,
>>>>> symbol,
>>>>> line thickness, color etc.
>>>>>
>>>>> Already my site allows a user to select the layer they want to change,
>>>>> then
>>>>> change the styles for a point only. The changing doesn't seem to be a
>>>>> problem right now.
>>>>>
>>>>> The problem I have:
>>>>>
>>>>> Once a user selects the layer they want to load. How would I get the
>>>>> layer
>>>>> and use XML document or XPATH or something to allow the users edit XML
>>>>> nodes.
>>>>>
>>>>> Here is my code that checks to see what layer type I have when the
>>>>> user
>>>>> selects the layer. I have 3 different user controls (one for line,
>>>>> one
>>>>> for
>>>>> poly, one for line). What I really want, is to load the layer and
>>>>> populate
>>>>> the appropriate controls inside the user control.
>>>>>
>>>>> MgSiteConnection conn = InitializeGisWebTier();
>>>>> string resource = "Library://MUNICIPALITIES/" +
>>>>> Municipality
>>>>> +
>>>>> "/2_DATA/" + LayerName + ".FeatureSource";
>>>>>
>>>>> MgResourceService svc =
>>>>> (MgResourceService)conn.CreateService(MgServiceType.ResourceService );
>>>>>
>>>>> // Populate some values that we will need.
>>>>> MgResourceIdentifier resourceId = new
>>>>> MgResourceIdentifier(resource);
>>>>> MgFeatureReader featureReader =
>>>>> LayerDefinitionFactory.MakeAFeatureReader(conn, resourceId);
>>>>>
>>>>> // Find out what type of Geometric property the
>>>>> FeatureSource we
>>>>> uploaded has.
>>>>> string geometricPropertyType =
>>>>> LayerDefinitionFactory.GetFeatureSourceGeometricPropertyType(featureReader);
>>>>>
>>>>> switch (geometricPropertyType)
>>>>> {
>>>>> case "SURFACE":
>>>>> // We load the Polygon usercontrol
>>>>> this.phStylizeLayerControl.Controls.Add(new
>>>>> PolygonStyleBuilder());
>>>>> break;
>>>>> case "POINT":
>>>>> // we load the point usercontrol
>>>>> //this.phStylizeLayerControl.Controls.Add(new
>>>>> PointStyleBuilder());
>>>>> PointStyleBuilder control =
>>>>> (PointStyleBuilder)LoadControl("~/Pages/Controls/PointStyleBuilder.ascx");
>>>>> this.phStylizeLayerControl.Controls.Add(control);
>>>>> txtSymbol.Enabled = true;
>>>>> txtSymbolSize.Enabled = true;
>>>>> break;
>>>>> case "CURVE":
>>>>> // we load the line user control
>>>>> this.phStylizeLayerControl.Controls.Add(new
>>>>> LineStyleBuilder());
>>>>> break;
>>>>> }
>>>>>
>>>>> Thanks for any help in advance.
>>>>>
>>>>>
>>>> _______________________________________________
>>>> 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/Load-Layer-Definition-XML-tp2199703p2452354.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list