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");
}