Re[mapguide-users] turn all Layers from MapGuide repository
Kenneth Skovhede, GEOGRAF A/S
ks at geograf.dk
Thu Jun 12 10:51:09 EDT 2008
You can use the EnumerateResources function.
I belive it is in the MgResourceService.
Beware though, that the layers you show below are runtime map layers,
whereas the layers in the repository are layerdefinitions.
The layerdefinitions are all xml files.
I have built an API that handles this Xml in a more accesible way:
http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/basics
With MaestroAPI, you can get all the layers in the server with this code:
MaestroAPI.ServerConnectionI connection = new MaestroAPI.LocalNativeConnection(configfile, username, password, locale);
foreach(ResourceListResourceDocument doc in con.GetRepositoryResources("Library://", "LayerDefinition"))
{
LayerDefinition layer = connection.GetLayerDefinition(doc.ResourceId);
if (layer.Item as VectorLayerDefinition != null)
{
string layerType = (layer.Item as VectorLayerDefinition).Geometry;
}
}
Regards, Kenneth Skovhede, GEOGRAF A/S
adnan.c skrev:
> Hello All,
>
> Currently working with the API for MapGuide OpenSource 2.0 and have a
> requirement for returning all layers from the MapGuide repository.
>
> I am able to return all layer names for a particular map using the below C#
> code
>
> map.Open(resService, mapName);
>
> MgLayerCollection layers = map.GetLayers();
>
> ArrayList layerNames = new ArrayList();
>
> for (int i = 0; i < layers.GetCount(); i++)
> {
> MgLayer layer = (MgLayer)layers.GetItem(i);
>
> string layerType = layer.GetFeatureGeometryName();
>
> layerNames.Add(layer.GetName());
> }
>
> How would I go about returning all Layers in the MapGuide repository as a
> large number of layers won't be associated with a map?
>
> Many Thanks,
>
> Adnan
>
>
More information about the mapguide-users
mailing list