上一视图下一视图功能实现(C#+SuperMap Objects)
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;
}
}
}
//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;
}
}
}