Хорошо, не очень популярный вопрос.
Я наткнулся на событие CustomizeMapAreas. Там я перебрал e.MapAreaItems
и отрегулировал размер областей так, чтобы была всего одна область для всего столбца. Затем я удалил области, которые мне больше не нужны. Вероятно, это не самый эффективный способ сделать это, но вот оно ...
protected void FixStackedColumnAreas(object sender, CustomizeMapAreasEventArgs e)
{
Dictionary<float, MapArea> newAreas = new Dictionary<float, MapArea>();
//loop through all areas and collect the Min and Max Y values for each X
foreach (MapArea area in e.MapAreaItems)
{
if (!newAreas.ContainsKey(area.Coordinates[0]))
{
newAreas.Add(area.Coordinates[0], area);
}
else
{
//get the lowest and highest Y for this X column area
newAreas[area.Coordinates[0]].Coordinates[1] = Math.Min(newAreas[area.Coordinates[0]].Coordinates[1], area.Coordinates[1]);
newAreas[area.Coordinates[0]].Coordinates[3] = Math.Max(newAreas[area.Coordinates[0]].Coordinates[3], area.Coordinates[3]);
}
}
//clear out existing areas
e.MapAreaItems.Clear();
//put in our new areas that define the whole column area instead of the individual pieces of the column
foreach (MapArea area in newAreas.Values)
{
e.MapAreaItems.Add(area);
}
}