SuperMap Objects實現上一視圖下一視圖功能
//list 用於儲存視圖範圍
private List<SuperMapLib.soRect> m_extents = new List<SuperMapLib.soRect>();
//視圖存取list的最大限制數
private int m_extentRecordsMax = 3;
//當前顯示視圖在視圖list中的index
private int m_extentNowIndex = 0;
//當前視圖操作狀態 next|last|other
private String m_viewState = String.Empty;
//上一視圖
private void btnLastView_Click(object sender, EventArgs e)
{
this.m_viewState="last";
this.btnNextView.Enabled = true;
if(this.m_extentNowIndex==0)
{
}
else if (this.m_extentNowIndex == 1)
{
this.m_extentNowIndex = this.m_extentNowIndex - 1;
this.SuperMap1.ViewBounds = this.m_extents[this.m_extentNowIndex];
this.SuperMap1.Refresh();
this.btnLastView.Enabled = false;
}
else
{
this.m_extentNowIndex=this.m_extentNowIndex-1;
this.SuperMap1.ViewBounds = this.m_extents[this.m_extentNowIndex];
this.SuperMap1.Refresh();
}
}
//下一視圖
private void btnNextView_Click(object sender, EventArgs e)
{
this.m_viewState = "next";
this.btnLastView.Enabled = true;
if (this.m_extentNowIndex == this.m_extents.Count - 1)
{
}
else if (this.m_extentNowIndex == this.m_extents.Count - 2)
{
this.m_extentNowIndex = this.m_extentNowIndex + 1;
this.SuperMap1.ViewBounds = this.m_extents[this.m_extentNowIndex];
this.SuperMap1.Refresh();
this.btnNextView.Enabled = false;
}
else
{
this.m_extentNowIndex = this.m_extentNowIndex + 1;
this.SuperMap1.ViewBounds = this.m_extents[this.m_extentNowIndex];
this.SuperMap1.Refresh();
}
}
//地圖繪製完成後動作
private void SuperMap1_AfterMapDraw(object sender, AxSuperMapLib._DSuperMapEvents_AfterMapDrawEvent e)
{
if (this.m_viewState!="last"&& this.m_viewState!="next")
{
if (this.m_extents.Count < m_extentRecordsMax)
{
this.m_extents.Add(this.SuperMap1.ViewBounds);
this.m_extentNowIndex = this.m_extents.Count - 1;
this.m_viewState = null;
}
else
{
this.m_extents.Add(this.SuperMap1.ViewBounds);
this.m_extents.RemoveAt(0);
this.m_extentNowIndex = this.m_extents.Count - 1;
this.m_viewState = null;
}
}
}