Yale,
Thank you.
I pre-generated 9 zoom levels cache as sacles following:
1000,000
500,000
250,500
100,000
50,000
25,000
10,000
5,000
2,500
But some times my client application don’t use the scales I pre-generated as above, for example, when I zoom to 50,000, client application may generate new cache directory named 50,000.00001, So my pre-generated cache will not be used.
my code:
this.winformsMap1.ZoomLevelSnapping =ThinkGeo.MapSuite.DesktopEdition.ZoomLevelSnappingMode.None;
this.winformsMap1.ExtentOverlay.MouseWheelMode =ThinkGeo.MapSuite.DesktopEdition.MapMouseWheelMode.Disabled;
this.winformsMap1.MouseWheel += new System.Windows.Forms.MouseEventHandler(winformsMap1_MouseWheel);
long[] m_Scales = new long[] { 1000000, 500000, 250000, 100000, 50000,25000, 10000, 5000, 2500 };
private int m_zoomIndex = 1;
public void ZoomIn()
{
if (m_zoomIndex < m_scales.GetLength(0))
{
++m_zoomIndex;
}
else
{
return;
}
this.winformsMap1.ZoomToScale(m_scales[m_zoomIndex - 1]);
this.winformsMap1.Refresh();
}
public void ZoomOut()
{
if (m_zoomIndex >= 2)
{
--m_zoomIndex;
}
else
{
return;
}
this.winformsMap1.ZoomToScale(m_scales[m_zoomIndex - 1]);
this.winformsMap1.Refresh();
}
private void winformsMap1_MouseWheel(object sender,System.Windows.Forms.MouseEventArgs e)
{
if (e.Delta > 0)
{
ZoomIn();
}
else
{
ZoomOut();
}
}
Senlin