如何用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);
}
...全文
87 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2003-10-17
  • 打赏
  • 举报
回复
不清楚,帮你顶。

2,141

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧