设为首页 加入收藏

TOP

7.7.3 地图放大、缩小的实现(3)
2013-10-07 14:54:31 来源: 作者: 【 】 浏览:62
Tags:7.7.3 地图 放大 缩小 实现

7.7.3  地图放大、缩小的实现(3)

函数OnMouseDownMap1()的代码如下:

代码位置:见光盘中本章源代码的CMapPublicView类。

  1. 1  void CMapPublicView::OnMouseDownMap1(short Button, short Shift, long X, long Y)  
  2. 2  {  
  3. 3   CString str;  
  4. 4   CMoPoint m_CenterPoint;                             //缩放的中心点  
  5. 5   double m_CenterPointX;                              //定义双精度类型变量  
  6. 6   double m_CenterPointY;  
  7. 7   CMoRectangle rect_Extent;                               //定义矩形范围  
  8. 8   double m_TrackRectangle_Heigh;                          //拉框所选范围的高度  
  9. 9   double m_TrackRectangle_Width;                          //拉框所选范围的宽度  
  10. 10      CMoRectangle rect;                                  //拉框范围  
  11. 11      double X_Scale;                                     //x 方向拉框比例  
  12. 12      double Y_Scale;                                     //Y方向拉框比例  
  13. 13      double m_Scale;                                     //比例系数  
  14. 14      int x=(int)Info.CalcScale(&m_Map);                  //比例尺  
  15. 15      str.Format("比例尺 1:%d",x);  
  16. 16      switch(m_CurrentOperation)                          //选择语句  
  17. 17      {  
  18. 18      case PAN:                                           //漫游  
  19. 19          m_Map.Pan();  
  20. 20          break;  
  21. 21      case ZOOMIN:                                            //放大  
  22. 22          if(x<7000)  
  23. 23          {  
  24. 24              if(!bControlFlag)  
  25. 25                  ShowLayer();                                //显示图层  
  26. 26              MessageBox("已经到最大");  
  27. 27              break;  
  28. 28          }  
  29. 29          rect=m_Map.TrackRectangle();  
  30. 30          m_TrackRectangle_Heigh=rect.GetHeight()/2;  
  31. 31          m_TrackRectangle_Width=rect.GetWidth()/2;  
  32. 32          if(LPDISPATCH(rect)&&m_TrackRectangle_Heigh!=0&&m_TrackRectangle_   
  33. Width!=0)  
  34. 33          {  
  35. 34              m_Map.SetExtent(rect);                          //拉框放大  
  36. 35          }  
  37. 36          else                                                //定点放大  
  38. 37          {  
  39. 38              m_CenterPoint=m_Map.ToMapPoint(float(X),float(Y));  //转换成空间坐标  
  40. 39              m_CenterPointm_CenterPointX=m_CenterPoint.GetX();  
  41. 40              m_CenterPointm_CenterPointY=m_CenterPoint.GetY();  
  42. 41              rect_Extent=m_Map.GetExtent();                  //获得地图显示范围  
  43. 42              rect_Extent.ScaleRectangle(0.9);                //设置放大系数  
  44. 43              m_Map.SetExtent(rect_Extent);                   //设置地图显示范围  
  45. 44              m_Map.CenterAt(m_CenterPointX,m_CenterPointY);  //使图形居中  
  46. 45          }  
  47. 46          Number++;  
  48. 47          if(!bControlFlag)  
  49. 48          {  
  50. 49              ShowLayer();  
  51. 50          }  
  52. 51          break;  


第3~15行代码为定义辅助的变量并赋初值。

第18~20行代码为地图的漫游,关于漫游的具体实现将在下面进行详细讲解。

第22~51行代码为地图放大的实现。当用户在地图上单击时,可以获得按下的点的坐标,然后以该点为中心,通过设置比例系数,来实现地图的缩放。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.7.3 地图放大、缩小的实现(4) 下一篇7.7.3 地图放大、缩小的实现(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: