如何用VC在动画层中移动一个Feature
jf_jf 2003-10-17 07:19:59 我刚学习MapInfo,我建立了一个动画层,按File/Open菜单后,创建一个Feature,在OnTimer中如何移动它?我写了一段代码,可是不移动,请大家看一下。
bool enable_timer=false;
int CJfView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if(!m_ctrlMapX.Create(NULL,WS_VISIBLE,CRect(0,0,100,100),this,IDC_MAP)) return -1;
m_ctrlMapX.SetGeoSet("C:\\BetaData\\Colloage\\colloage.gst");
CMapXLayer lyr;
lyr=m_ctrlMapX.GetLayers().CreateLayer("tempAnimate",NULL,1);
m_ctrlMapX.GetLayers().SetAnimationLayer(lyr);
lyr.GetLabelProperties().SetOverlap(true);
SetTimer(1,500,NULL);
return 0;
}
void CJfView::OnFileOpen()
{
// TODO: Add your command handler code here
CMapXFeature newobj; // Standalone object
CMapXFeature obj; // to hold object added to layer
// Create the new object and attach it to the map抯 coordinate system
if(!newobj.CreateDispatch(newobj.GetClsid())) {
TRACE0("Failed to Create Feature object");
return;
}
try {
newobj.Attach(m_ctrlMapX.GetDispatch());
newobj.SetType(miFeatureTypeSymbol);
// Use the map抯 default symbol style
newobj.SetStyle(m_ctrlMapX.GetDefaultStyle());
newobj.GetPoint().Set(5.3452, 1.91234);
// Now add the object to the layer
// obj is the newly added object
// you can still use newobj to add more objects
obj = m_ctrlMapX.GetLayers().Item(1).AddFeature(newobj);
} catch (COleDispatchException *e) {
e->ReportError();
e->Delete();
} catch (COleException *e) {
e->ReportError();
e->Delete();
}
enable_timer=true;
}
void CJfView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(enable_timer==1){
double x,y;
x=m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).GetCenterX();
y=m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).GetCenterY();
m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).Offset(0.0 , 5.1 );
m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).Update();
CMapXLayer srcLayer = m_ctrlMapX.GetLayers().Item(1);
srcLayer.Refresh();
x=m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).GetCenterX();
y=m_ctrlMapX.GetLayers().Item(1).GetFeatureByID(1).GetCenterY();
}
CView::OnTimer(nIDEvent);
}