www.pudn.com > MapMark.rar > MarkOb.cpp


//地图标注对象 
#include "stdafx.h" 
 
#include "MarkObj.h" 
 
#define RELEASE(x) {if (x != NULL) {x->Release(); x = NULL;}} 
 
extern CMapX  MapXObj; 
CMarkObj::CMarkObj() 
{ 
} 
 
CMarkObj::~CMarkObj() 
{ 
} 
 
void CMarkObj::MarkInit(CString strLayerName, CString strSymbolName, double dX, double dY,CString strSymbolID)  
{ 
	m_strLayerName = strLayerName; 
	m_strSymbolName = strSymbolName; 
	m_strBmpFileName = strSymbolID+".bmp"; 
	m_dLongitude = dX; 
	m_dLatitude = dY;  
 
	CreateSymbol(); 
} 
 
void CMarkObj::CreateSymbol() 
{ 
	try  
	{ 
		CMapXLayer layer; 
		CMapXFeatureFactory FtFy; 
		CMapXFeature Ftr; 
		COleVariant pntVt; 
		CY			FontSize; 
		FontSize.Hi = 0x00000; 
		FontSize.Lo = 0x18000; 
		 
		layer=MapXObj.GetLayers().Item(m_strLayerName); 
 
		m_ptMarkPoint.CreateDispatch(m_ptMarkPoint.GetClsid()); 
		m_ptMarkPoint.Set(m_dLongitude,m_dLatitude); 
 
		pntVt.vt = VT_DISPATCH; 
		pntVt.pdispVal = m_ptMarkPoint.m_lpDispatch; 
		pntVt.pdispVal->AddRef(); 
 
		FtFy=MapXObj.GetFeatureFactory(); 
 
		//绘制bmp图标 
		Ftr=FtFy.CreateSymbol(pntVt); 
		Ftr.GetStyle().SetSymbolType(miSymbolTypeBitmap); 
		Ftr.GetStyle().SetSymbolBitmapSize(16); 
		Ftr.GetStyle().SetSymbolBitmapTransparent(TRUE);	 
		Ftr.GetStyle().SetSymbolBitmapName(m_strBmpFileName); 
 
		layer.GetLabelProperties().GetStyle().SetTextFontColor(miColorRed); 
		layer.GetLabelProperties().GetStyle().GetTextFont().SetSize(FontSize); 
		layer.SetKeyField("name"); 
		layer.GetLabel().SetOffset(10); 
		Ftr.SetKeyValue(m_strSymbolName); 
		 
		m_fMarkSymbol = layer.AddFeature(Ftr);   
	} 
	catch (COleDispatchException *e)  
	{ 
		e->ReportError(); 
		e->Delete(); 
	} 
	catch (COleException *e) { 
		e->ReportError(); 
		e->Delete(); 
	} 
} 
 
void CMarkObj::ClearSymbol() 
{ 
	if(m_strMarkSymbolKey != "")	//标记 
	{	 
		m_fMarkSymbol = MapXObj.GetLayers().Item(m_strLayerName).GetFeatureByKey(m_strMarkSymbolKey); 
		MapXObj.GetLayers().Item(m_strLayerName).DeleteFeature(m_strMarkSymbolKey); 
		m_strMarkSymbolKey = ""; 
	} 
} 
	 
void CMarkObj::MoveSymbol() 
{ 
} 
 
void CMarkObj::SetSymbolName(CString strSymbolName) 
{ 
	m_strSymbolName = strSymbolName; 
} 
	 
void CMarkObj::SetSymbolLayer(CString strLayerName) 
{ 
	m_strLayerName = strLayerName; 
} 
	 
void CMarkObj::SetSymbolBmp(CString strBmpFileName) 
{ 
	m_strBmpFileName = strBmpFileName; 
} 
 
CString CMarkObj::GetSymbolName() 
{ 
	return m_strSymbolName; 
} 
	 
CString CMarkObj::GetSymbolLayer() 
{ 
	return m_strLayerName; 
} 
	 
CString CMarkObj::GetSymbolBmp() 
{ 
	return m_strBmpFileName; 
}