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() 这个已类似于