MaestroAPI 4.x API comparison
Maestro 4.x has fundamental API changes from 2.x. This table outlines the main classes/interfaces in 2.x and their equivalents in 3.x (NOTE: This is not a comprehensive list, and the list has not been verified yet). The list also contains small code samples, that will later be put in a separate section. Also see the API 3.x Comparisons guide for more info.
| v2.x | v4.x |
|---|---|
| IServerConnection con = new HttpServerConnection(host, sessionid, "en", true); | IServerConnection con = ConnectionProviderRegistry.CreateConnection("Maestro.Http", "Url=" + host + ";SessionId=" + sessionid + ";Locale=en;AllowUntestedVersion=true"); |
|
RuntimeMap map = con.GetRuntimeMap(mapid); |
IMappingService mapSvc = (IMappingService)con.GetService((int)ServiceType.Mapping); RuntimeMap map = mapSvc.OpenMap(mapid); |
| MapDefinition mapDef = new MapDefinition() | IMapDefinition mapDef = ObjectFactory.CreateMapDefinition(con, map.Name); |
| RuntimeMap map = new RuntimeMap(mdef); |
IMapDefinition mapDef = (IMapDefinition)con.ResourceService.GetResource(mapid); IMappingService mapSvc = (IMappingService)con.GetService((int)ServiceType.Mapping); RuntimeMap map = mapSvc.CreateMap(mapDef); |
| IWebLayout layout = con.GetWebLayout(webLayout); | IWebLayout layout = (IWebLayout)con.ResourceService.GetResource(webLayout); |
| MapDefinition layer = con.GetMapDefinition(mapDefId); | IMapDefinition layout = (IMapDefinition)con.ResourceService.GetResource(mapDefId); |
| MapDefinition.BaseMapDefinition | IMapDefinition.BaseMap |
| for (int i = 0; i < mdef.BaseMap.FiniteDisplayScale.Count; i++) | foreach (double d in baseMap.FiniteDisplayScale) |
| RuntimeMapLayer.Geometry | RuntimeMapLayer.GeometryPropertyName |
| RuntimeMapLayer.Guid | RuntimeMapLayer.ObjectId |
| LayerDefinition ldef = con.GetLayerDefinition(rl.ResourceId); | ILayerDefinition ldef = (ILayerDefinition)con.ResourceService.GetResource(rl.LayerDefinitionID); |
| FeatureSource fs = con.GetFeatureSource(vldef.ResourceId); | IFeatureSource fs = ObjectFactory.CreateFeatureSource(con, vldef.ResourceId); |
| RuntimeMap.LayerGroups | RuntimeMap.Groups |
| map.Layers.RemoveAt(0); |
Add: using System.Linq; To make this work. |
| con.SaveResourceAs(mdef, rtmDef); | con.ResourceService.SaveResourceAs(mdef, rtmDef); |
| ldef.Item as VectorLayerDefinitionType | ldef.SubLayer as IVectorLayerDefinition; (you can interrogate ldef.SubLayer.LayerType to determine what to cast to) |
| FeatureSetReader rd = layer.Query(filter, new string[] { layer.Geometry }) | IReader rd = map.CurrentConnection.FeatureService.QueryFeatureSource(layer.FeatureSourceID, layer.QualifiedClassName, new string[] { layer.GeometryPropertyName }) |
| VectorScaleRangeType.Items |
IVectorScaleRange.PointStyle IVectorScaleRange.LineStyle IVectorScaleRange.AreaStyle |
| VectorScaleRange.MinScaleSpecified/MaxScaleSpecified | IVectorScaleRange.MinScale.HasValue/.MaxScale.HasValue |
| PointTypeStyleType | IPointVectorStyle |
| LineTypeStyleType | ILineVectorStyle |
| AreaTypeStyleType | IAreaVectorStyle |
| LineRuleType | ILineRule |
| PointRuleType.Item | IPointRule.PointSymbolization2D |
| LineRuleType.Item | ILineRule.Stroke |
| AreaRuleType.Item | IAreaRule.AreaSymbolization2D |
| AreaTypeStyleType.AreaRule | IAreaVectorStyle.Rules |
| GridLayerDefinitionType | IRasterLayerDefinition |
| LayerDefinition.Item | ILayerDefinition |
| LineTypeStyle.Items | ILineRule.Strokes |
| ServerConnectionI.GetLegendImage | IMappingService.GetLegendImage |
| ServerConnectionI.DescribeFeatureSource | IServerConnection.FeatureService.DescribeFeatureSource |
| FeatureSourceReader.Read() | IReader.ReadNext() |
| FeatureSourceReader.Row.IsValueNull(column) | IReader.IsNull(column) |
| foreach (FeatureSetColumn fsc in fsr.Columns) | for (int i=0; i<fsr.FieldCount; i++) |
| FeatureSetReader.Columns.Length | IReader.FieldCount |
| FeatureSetReader.Columns[i].Type | IReader.GetFieldType(i) |
| FeatureSourceDescription.FeatureSourceSchema | FeatureSchema |
| RuntimeMapLayer.NeedRefresh | RuntimeMapLayer.NeedsRefresh (to get) RuntimeMapLayer.ForceRefresh() (to set) |
| RuntimeMapLayer.ResourceID | RuntimeMapLayer.LayerDefinitionID |
| RuntimeMap.Extents | RuntimeMap.DataExtent |
| ServerConnectionI.HasFolder |
con.ResourceService.ResourceExists(folderpath) Make sure that folderpath ends with '/' to indicate it's a folder |
| ServerConnectionI.CreateFolder | con.ResourceService.SetResourceXmlData(folderpath, null) |
| RuntimeMapLayer.ResourceId | RuntimeMapLayer.LayerDefinitionID |
| map.FiniteScales |
IMapDefinition mdef =
(IMapDefinition)map.CurrentConnection.ResourceService.GetResource(map.MapDefinition); IBaseMapDefinition bm = mdef.BaseMap; bm.FiniteDisplayScale.ToArray(); |
