== !MapGuide Maestro Developer Documentation == This page describes how to use the MaestroAPI from the [wiki:maestro MapGuide Maestro] project in your own application. The official API for !MapGuide is a wrapper for the C++ classes, and focuses on portability and map interactions with the displayed map. The !MapGuide server has a large set of functionality that handles authoring and managing maps and spatial data. This functionality is only exposed through a few methods that allow reading and writing of Xml. The C++ classes are wrapped for PHP and Java as well as for .Net. This means that they do not support native streams or other .Net components. The C++ classes communicate with the !MapGuide server through a dedicated port. This means that it is only possible to interact with servers on the local intranet (opening the port is not recommended for security reasons). The MaestroAPI attempts to deal with those shortcommings. It exposes all the Xml structures in the !MapGuide server as managed .Net classes. It reads and writes .Net native streams and documents. Finally it has an optional usage that will communicate with the standard installation of the Web server through regular http communcation. This last point makes it possible to write standalone applications that manage the server, just like the [wiki:maestro MapGuide Maestro] application does. The developer contents currently consists of the following pages: * '''[wiki:maestro/MaestroAPI/basics Basic MaestroAPI]''' Basic explanation of the MaestroAPI and features. * '''[wiki:maestro/MaestroAPI/codebasics Code overview]''' An explanation of different parts of the MaestroAPI. * '''[http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/Documentation/Msdn-Chm/MaestroAPI.chm?format=raw MaestroAPI.chm]''' A compiled help document describing the MaestroAPI details (If you are unable to use it, try rightclicking the file and choose "Properties", then click "Unblock"). If you want some extra information or explanations, please ask at the [http://mapguide.osgeo.org/user.html MapGuide Users Mailing list]. You may add your own examples of MaestroAPI usage here: * '''[wiki:maestro/MaestroAPI/samples/RuntimeMap Utilizing RuntimeMap via Maestro API]''' - a short example of getting to RuntimeMap instance. * '''[wiki:maestro/MaestroAPI/samples/AddInitialLayer Adding a layer before startup via Maestro API]''' - an example of how to add a layer to map before the viewer loads. * '''[wiki:maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout Creating a temporary WebLayout with customized zoom]''' - shows how to modify an existing !WebLayout to select the initial zoom level. * '''[wiki:maestro/MaestroAPI/samples/ModifyLayerFilter Modifying the filter on a layer]''' - shows how to modify the filter on a layer for the current user. * '''[wiki:maestro/MaestroAPI/samples/IterateLayerRules Examining all styles defined in a layer]''' - a template for examining all layer styles in a LayerDefinition. * '''[wiki:maestro/MaestroAPI/samples/BrandNewSample Add your cool sample here]''' You must be logged in with an [http://www.osgeo.org/osgeo_userid/ OSGeo ID] before you can edit the page.