如何用vc++调用mapinfo
就是vc++调用mapinfo(OLE嵌入)做一个界面,显示数字地图,有对地图的操作(例如:放大 缩小 移动地图 回复地图原来大小 量距离 量面积等等)要具体的步骤,易做图源更好!!等待好心高人帮我解答!!
本人新手,诚心求助!! --------------------编程问答-------------------- mark --------------------编程问答-------------------- 要安装MAPX5.0 或MapXtreme2004 以上版本才行。
如果是MAPX5.0,可以直接作为ActiveX控件调用。 --------------------编程问答-------------------- 第一步:用MFC应用程序向导新建一个单文档的工程,名字就不妨取为:mapxdemo
第二步:Project> Add To Project>Files,选择MapX.cpp和MapX.h。同时还要手工将Mapx.h和Mapx.cpp这两个文件复制到你的工程目录中去,不然编译时会报错的
第三步:在mapxdemoView.h文件中包括它:
#include "MapX.h"
另外还要在视图类(mapxdemoView.h)中定义一个对象:
class CMapxdemoView : pubic CView
{
......
CMapX m_ctrlMapX; //这是要添加的
.....
......
}
第四步::声明一个常量。View > Resource Symbols>New>name为IDC_MAP。
第五步:在类向导(ctrl+W)中为mapxdemoView创建WM_SIZE 和 WM_CREATE的处理消息:
void CMapxSampleView::OnCreate(UINT nType, int cx, int cy)
{
m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this,IDC_MAP);
}
void CMapxSampleView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);
}
第六步:在类向导中为CMapXSampleView创建WM_SETFOCUS的处理消息,以确保当窗口处于活动状态时得到焦点。
void CMapxSampleView::OnSetFocus(CWnd* pOldWnd)
{
CView::OnSetFocus(pOldWnd);
m_ctrlMapX.SetFocus();
}
然后编译运行。就可以看到USA的地图了!如果没有就再试试。如果想让程序运行时不显示任何地图数据,需要将gst清空,方法如下:
int CMapxSampleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//创建mapx控件
CRect rc(0,0,100,100);
if( !m_ctrlMapX.Create(NULL, WS_VISIBLE, rc, this, IDC_MAP) )
return -1;
//清空 gst 地图
m_ctrlMapX.SetGeoSet("");
return 0;
}
当然如果想显示自己的地图的话,在m_ctrlMapX.SetGeoSet("");中写入路径就可以了。
如m_ctrlMapX.SetGeoSet("asia.gst"); 或m_ctrlMapX.SetGeoSet("maps\\asia.gst");
这说明maps文件夹是在工程目录下的.
在地图显示出来后,用户通常要以各种比例查看地图的全局、局部或细部,必须提供诸如放大、缩小和漫游等功能。采用MapX通用工具,可以非常方便地实现上述功能。设定MapX使用标准工具的方法很简单,只需设定地图对象的CurrentTool属性。下面的例子是用标准放大工具实现放大功能。
添加新菜单项资源,输入标题“工具”,在“工具”下添加子菜单,输入标题“放大”及ID 为ID_ZOOM_ IN。打开类向导,选择视图类CMapXSampleView,为菜单项ID_ZOOM_IN 添加COMMAND 消息映射函数OnZoomIn ( ),并编辑码如下。
void CMapXSampleView::OnZoomIn()
{
m_ctrlMapX.SetCurrentTool(miZoomInTool);// miZoomInTool为放大工具常量
}
编译运行程序,选择“工具|放大”,就会看到此时光标变为放大镜,单击鼠标就会实现放大功能。可用相同方法实现其他标准工具的功能。MapX提供的可用标准工具如下表。
--------------------编程问答-------------------- 对不起,图实在贴不上,简单说:
工具
常数
说明
添加线条
miAddLineTool
将线条图元添加到插入图层中。
添加点
miAddPointTool
单击该工具可将点图元添加到插入图层中。
添加折线
miAddPolyLineTool
将折线图元添加到插入图层中。
添加区域
miAddRegionTool
将区域图元添加到插入图层中。
箭头
miArrowTool
单击标题或注释此外,在可编辑图层中移动选定图元或调整选定图元的大小。
居中
miCenterTool
单击该工具可以重新将地图居中。
加标签
miLabelTool
在一个图元上单击可以给该图元加标签。
平移
miPanTool
拖动该工具可以重新将地图居中。
多边形选择
miPolygonSelectTool
单击该工具可以绘制一个多边形;该多边形内的对象将被选定。
半径选择
miRadiusSelectTool
拖动该工具可以选择半径内的图元。
矩形选择
miRectSelectTool
拖动该工具可以选择矩形内的图元。
选择工具
miSelectTool
单击该工具可以选择图元。
符号
miSymbolTool
放置符号注释。
文本
miTextTool
放置文本注释。
放大
miZoomInTool
放大。
缩小
miZoomOutTool
缩小。
--------------------编程问答-------------------- 我还是个新手,看到这些东西感觉很好!
--------------------编程问答-------------------- LZ,我也刚刚接触这个,单位领导要用mapinfo编一个电子地图的界面。刚好学习学习。不知道这方面有没有教程之类的东西? --------------------编程问答-------------------- 还不如用Mapserver+Openlayers呢,做成跟google map那样,我就是那么做的
补充:企业软件 , 地理信息系统