hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1670回复:6

帮我看看(VC+MO)

楼主#
更多 发布于:2004-10-21 20:34
我想在地图上动态打出红色实心圆点,可是运行时打出的却是方形的,并且颜色随机变化,以下是我的相关程序,帮我看看啊~
void CEasyMapView::OnMouseDownMap1(short Button, short Shift, long X, long Y)
{
  // Get the tracking layer
 CMoTrackingLayer tLayer(m_map.GetTrackingLayer());
 switch (m_curTool)
 {
   case ID_MAP_ADDEVENT:
    {
    
     CMoPoint mapPt(m_map.ToMapPoint((float)X,(float(Y))));
     CMoTrackingLayer trackLayer(m_map.GetTrackingLayer());
     trackLayer.AddEvent(mapPt,0);
     break;
    }
void CEasyMapView::OnAfterTrackingLayerDrawMap1(long hDC)
{
 // TOD Add your control notification handler code here
 CMoSymbol sym;
 sym.CreateDispatch(TEXT("MapObjects2.Symbol"));
         sym.SetColor(moRed);
 sym.SetSymbolType(moPointSymbol);
 sym.SetStyle(moCircleMarker);
 for (int i = 0; i < m_points.GetSize(); i++)
  m_map.DrawShape(*m_points, sym);
}
喜欢0 评分0
QQ:22621544 欢迎交流~^^~
ifbut
路人甲
路人甲
  • 注册日期2003-07-26
  • 发帖数111
  • QQ22278088
  • 铜币390枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-10-21 21:59
<P>我觉得应该把symbol定义在前边,不要放在OnAfterTrackingLayerDrawMap()里边,先定义symbol再画点,你试试!</P>
举报 回复(0) 喜欢(0)     评分
hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-10-21 22:45
<P>试了不行~这个有关系么?</P>
QQ:22621544 欢迎交流~^^~
举报 回复(0) 喜欢(0)     评分
narceine
路人甲
路人甲
  • 注册日期2003-08-07
  • 发帖数12
  • QQ
  • 铜币275枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-10-23 09:58
回复:(hyb1011)帮我看看(VC+MO)
<P>在OnInitialUpdate()里面加上下面语句:</P>
<P> CMoTrackingLayer tLayer(m_map.GetTrackingLayer());
 tLayer.SetSymbolCount(1);</P>
<P> CMoSymbol sym(tLayer.GetSymbol(0));
    sym.SetColor(moRed);
    sym.SetSymbolType(moPointSymbol);
    sym.SetStyle(moCircleMarker);
</P>
<P>试试行不。</P>
举报 回复(0) 喜欢(0)     评分
hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-10-23 19:42
<P>可以了,谢谢~<img src="images/post/smile/dvbbs/em04.gif" />
以下是总结的两种加红色圆点的方法,供和我有类似问题的新手参考,请大家指教:
一。
void CEasyMapView::OnMouseDownMap1(short Button, short Shift, long X, long Y)
{
 switch (m_curTool)
 {
  case ID_MAP_ADDPOINTS:
    {
      VARIANT va;
      VariantInit(;va);
      va.vt = VT_I4;  
     CMoPoint* point =new CMoPoint(m_map.ToMapPoint((float)X, (float)Y));
     if (LPDISPATCH(point))
    m_points.Add(point);
   // create a temp rectangle with which to refresh the screen
   // around the point
   CMoRectangle r = CMoRectangle();
   r.CreateDispatch(TEXT("MapObjects2.Rectangle"));
   r.SetBottom(point->GetY());
   r.SetLeft(point->GetX());
   r.SetTop(point->GetY()+1.0);
   r.SetRight(point->GetX()+1.0);
   r.ScaleRectangle(50.0);    va.vt = VT_DISPATCH;
   va.pdispVal = r.m_lpDispatch;
   tLayer.Refresh(true, va);
   break;
   }
 }
}
void CEasyMapView::OnAfterTrackingLayerDrawMap1(long hDC)
{
 // TOD Add your control notification handler code here
    CMoSymbol sym;
 if (!sym.CreateDispatch("MapObjects2.Symbol"))
  return;
 sym.SetColor(moPurple);
  // Draw points
 //
 sym.SetColor(moRed);
 sym.SetSymbolType(moPointSymbol);
 sym.SetStyle(moCircleMarker);
 for (int i = 0; i < m_points.GetSize(); i++)
  m_map.DrawShape(*m_points, sym);
}
二。
void CEasyMapView::OnMouseDownMap1(short Button, short Shift, long X, long Y)
{
  switch (m_curTool)
 {
  case ID_MAP_ADDEVENT:
    {
    
      CMoPoint mapPt(m_map.ToMapPoint((float)X,(float(Y))));
      CMoTrackingLayer trackLayer(m_map.GetTrackingLayer());
      trackLayer.AddEvent(mapPt,0);
       break;
     }
  }
}
void CEasyMapView::OnInitialUpdate()
{  
    CMoSymbol sym(tLayer.GetSymbol(0));
    sym.SetColor(moRed);
    sym.SetSymbolType(moPointSymbol);
    sym.SetStyle(moCircleMarker);
}</P>
[此贴子已经被作者于2004-10-23 19:56:48编辑过]
QQ:22621544 欢迎交流~^^~
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2004-10-24 07:18
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-10-25 14:15
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部