www.gusucode.com > VC++开源的SHP格式GIS地图查看软件源程序源码程序 > VC++开源的SHP格式GIS地图查看软件源程序源码程序\code\MapLayers.cpp

    //Download by http://www.NewXing.com
#include "stdafx.h"
#include "MapLayers.h"

CMapLayers::CMapLayers()
{


}

CMapLayers::~CMapLayers()
{
	Clear();

}

short CMapLayers::GetCount()
{
	return m_Layers.GetSize();
}

void CMapLayers::SetCount(short sCount)
{

}

CMapLayer* CMapLayers::GetAt(short sIndex)
{

	int iCount;
    CMapLayer *pLayer;
   
    iCount = m_Layers.GetSize() - 1;
	if ( sIndex < 0 || sIndex > iCount)
		return NULL;
	pLayer = m_Layers.GetAt(sIndex);
	return pLayer;
}

BOOL CMapLayers::Add(CMapLayer* pMapLayer)
{
	if ( pMapLayer == NULL )
		return FALSE;
	if (!m_Layers.Add( pMapLayer ))
		return FALSE;
	return TRUE;

}

void CMapLayers::Remove(short sIndex)
{
	int iCount;
    CMapLayer *pLayer;
   
    iCount = m_Layers.GetSize() - 1;
	if ( sIndex < 0 || sIndex > iCount)
		return;

	pLayer = m_Layers.GetAt(sIndex);
	m_Layers.RemoveAt(sIndex);
	delete pLayer;

}

void CMapLayers::Clear()
{
   int i,iCount;
   CMapLayer *pLayer;
   
   iCount = m_Layers.GetSize() - 1;
   for ( i = iCount ; i >= 0   ; i-- )
   {
		pLayer = m_Layers.GetAt(i);
		delete pLayer;
   } 
   m_Layers.RemoveAll(); 

}

void CMapLayers::MoveTo(short fromIndex, short toIndex)
{
	int iCount;
    CMapLayer *pLayer;
   
    iCount = m_Layers.GetSize() - 1;
	if ( fromIndex < 0 || fromIndex > iCount)
		return;
    if ( toIndex < 0 || toIndex > iCount)
		return;
	pLayer = m_Layers.GetAt(fromIndex);
	m_Layers.RemoveAt(fromIndex);
    m_Layers.InsertAt(toIndex, pLayer); 

}

void CMapLayers::MoveToTop(short sIndex)
{
	int iCount;
    CMapLayer *pLayer;
   
    iCount = m_Layers.GetSize() - 1;
	if ( sIndex < 0 || sIndex > iCount)
		return;
	pLayer = m_Layers.GetAt(sIndex);
	m_Layers.RemoveAt(sIndex);
    m_Layers.InsertAt(0, pLayer); 

}

void CMapLayers::MoveToBottom(short sIndex)
{
	int iCount;
    CMapLayer *pLayer;
   
    iCount = m_Layers.GetSize() - 1;
	if ( sIndex < 0 || sIndex > iCount)
		return;
	pLayer = m_Layers.GetAt(sIndex);
	m_Layers.RemoveAt(sIndex);
    m_Layers.InsertAt(iCount, pLayer); 

}

void CMapLayers:: GetAllExtent(CMapRectangle& rc)
{
	short i;
	CMapLayer *pLayer;
	     
    for ( i = 0 ; i < m_Layers.GetSize() ; i++ )
	{
		pLayer = m_Layers.GetAt(i);
		CMapRectangle extent(pLayer->GetExtent());
		if ( i == 0 )
		{
			rc.SetLeft(extent.GetLeft());
			rc.SetRight(extent.GetRight());
			rc.SetTop(extent.GetTop());
			rc.SetBottom(extent.GetBottom());  
		}
		else
        { 
           if ( extent.GetLeft() < rc.GetLeft() )
			   rc.SetLeft(extent.GetLeft());
		   if ( extent.GetRight() > rc.GetRight() )
			   rc.SetRight(extent.GetRight());
           if ( extent.GetTop() < rc.GetTop() )
			   rc.SetTop(extent.GetTop());
		   if ( extent.GetBottom() > rc.GetBottom() )
			   rc.SetBottom(extent.GetBottom());
 
		} 
     }  
       
  
}