private IMapTableDescription GetTableDesc(IMapServer3 mapServer, int layerID) { ILayerDescriptions layerDescs = mapServer.GetServerInfo(mapServer.DefaultMapName).DefaultMapDescription.LayerDescriptions; long c = layerDescs.Count; for (int i = 0; i < c; i++) { ILayerDescription3 layerDesc = (ILayerDescription3)layerDescs.get_Element(i); if (layerDesc.ID == layerID) { layerDesc.LayerResultOptions = new LayerResultOptionsClass(); layerDesc.LayerResultOptions.GeometryResultOptions = new GeometryResultOptionsClass(); layerDesc.LayerResultOptions.GeometryResultOptions.DensifyGeometries = true; return((IMapTableDescription)layerDesc); } } throw new ArgumentOutOfRangeException("layerID"); }
/// <summary> /// Create a table description, which includes generalization options /// </summary> /// <param name="mapServer"></param> /// <param name="layerId"></param> /// <param name="zoomLevel"></param> /// <returns></returns> private IMapTableDescription GetTableDescription(IMapServer3 mapServer, int layerId, int zoomLevel) { ILayerDescriptions layerDescs = mapServer.GetServerInfo(mapServer.DefaultMapName).DefaultMapDescription.LayerDescriptions; int count = layerDescs.Count; for (int i = 0; i < count; i++) { ILayerDescription3 layerDesc = (ILayerDescription3)layerDescs.get_Element(i); if (layerDesc.ID == layerId) { layerDesc.LayerResultOptions = new LayerResultOptionsClass(); layerDesc.LayerResultOptions.GeometryResultOptions = new GeometryResultOptionsClass(); // Generalize geometries based on zoom level layerDesc.LayerResultOptions.GeometryResultOptions.GeneralizeGeometries = true; layerDesc.LayerResultOptions.GeometryResultOptions.MaximumAllowableOffset = 2000 / (zoomLevel + 1); return((IMapTableDescription)layerDesc); } } throw new ArgumentOutOfRangeException("layerID"); }