首页 > 代码库 > qt 环境下mapx组件的鼠标跟踪
qt 环境下mapx组件的鼠标跟踪
经过两天的研究mapx组件人坐标转换还是没有转换成功,因为不管怎么变,定点转换的经纬度坐标始终与期望的值有较大的偏差。最后还是想老大请教了一下,划了半天功夫就研究出来了(不愧是老大,仰慕之情犹如滔滔江水……):老大说,组件导出的包文件中坐标转换函数在qt环境下有问题,你使用vc下面的dll就可以了,还给了一个链接让参考,再次感谢这位博主。http://blog.csdn.net/zirandeai/article/details/51160111
下面给出vc做的动态库,,可以直接下载。https://pan.baidu.com/s/1kVNN0OJ
下载后将文件放在项目路径下,然后将.pro文件加入.lib的文件路径,具体如下:LIBS += ../Eagle/MapXLib1.lib
将.h文件加入到头文件中,最后显示的加载dll文件(本人是显示的加载动态库)。
在头文件中声明一个QLibrary变量,初始化的时候加载dll。这样就可以直接使用mapx坐标转换函数了。
{
ui->setupUi(this);
mapx = NULL;
QAxWidget *widget = new QAxWidget(this);
widget->setControl("{9D6ED188-5910-11D2-98A6-00A0C9742CCA}");
widget->move(10,10);
widget->resize(size().width()-10,size().height()-10);
mapx = new CMapX(widget->asVariant().value<IDispatch*>());
pLayer = mapx->Layers()->CreateLayer("test");
mapx->ZoomTo(3,120.06872, 29.35692);
QObject::connect(widget, SIGNAL(MouseMove(int, int, double, double)), this, SLOT(MapxMouseMove(int, int, double, double)));
}
MouseMove(int, int, double, double)是mapx的信号
void MainWindow::MapxMouseMove(int Button, int Shift, double X, double Y){
if(lib.load()){
double Lng = 0.0;
double Lat = 0.0;
CoordScreen2Map(mapx->asVariant().value<IDispatch*>(),X,Y,Lng,Lat);
qDebug()<<"mapx"<<Lng<<"mapy"<<Lat;
pFeatureFactory = mapx->FeatureFactory();
pFeature = pFeatureFactory->CreateSymbol();
pPoint = pFeature->Point();
pPoint->Set(Lng,Lat);
pLayer->AddFeature(pFeature->asVariant().value<IDispatch*>());
}
else {
qDebug()<<"error";
}
}
qt 环境下mapx组件的鼠标跟踪
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。