MAPX开发(一)

1:创建地图。CMapX.Create(NULL,WS_VISIBLE,CRect(0,0,300,300),this,IDC_MAP),其中CRect指明地图所占区域大小,IDC_MAP是控件ID,在单文档中新建一个没有任何绑定的ID,在对话框中可以直接用对话框的ID。

2:加载图层。CMapX.GetLayer().Add(“path”);其中PATH是TAB格式的MAPINFO文件

3:CMapX.SetMousewheelSupport(3);设置鼠标滚动的放大缩小功能。

4:CMapX.SetCurrentTool();设置当前工具,取值为 ToolConstants 值。默认值为 miArrowTool。

miArrowTool = 1000                 miTextTool = 1006                 

miSelectTool = 1007                miRadiusSelectTool = 1008

miRectSelectTool = 1009          miPolygonSelectTool = 1010

miLabelTool = 1011                  miSymbolTool = 1005

miAddLineTool = 1012              miZoomOutTool = 1004

miAddPolylineTool = 1013          miZoomInTool = 1003

miAddRegionTool = 1014           miCenterTool  = 1002

miAddPointTool = 1015             miPanTool   = 1001

5:Mapx中Feature的创建。

myfeature.CreateDispatch(myfeature.GetClsid());

myfeature=myfeaturefactory.CreateSymbol();

mystyle=myfeature.GetStyle();

mystyle.SetSymbolType(miSymbolTypeBitmap);

mystyle.SetSymbolBitmapSize(24);

mystyle.SetSymbolBitmapTransparent(false);

myfeature.SetStyle(mystyle.m_lpDispatch);

myfeature.GetPoint().Set(centerX,centerY);

CMapXBitmapSymbols bmps;

bmps.CreateDispatch(bmps.GetClsid());

myfeature.GetStyle().SetSymbolBitmapName(_T("STOP1-32.bmp"));

mylayer.AddFeature(myfeature);

其中SetSymbolBitmapName是设置图片SetSymbolBitmapName(”path”),path可以是图片的名字,这个图片必须在mapx的公共文件中如:C:/Program Files/MapInfo/MapX 5.0/CUSTSYMB。就可以加载自己的图片。                                6:MapX中点的创建,已要用到CreateDispatch.如,CMapXPoint point; point.CreateDispatch(point.GetClsid());

7:用户可以添加对地图事件处理的消息函数,在头文件中加DECLARE_EVENTSINK_MAP()。类似加DECLARE_MESSAGE_MAP();然后在代码中加入BEGIN_EVENTSINK_MAP(CDemoMapView, CView)
    ON_EVENT(CDemoMapView, IDC_MAP, MAPX_DISPID_TOOLUSED, OnToolUsed, VTS_I2 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_BOOL VTS_BOOL VTS_PBOOL)
END_EVENTSINK_MAP() 这个已类似于

你可能感兴趣的:(MAPX开发(一))