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;
}