码迷,mamicode.com
首页 > 其他好文 > 详细

qt 环境下mapx组件的鼠标跟踪

时间:2016-09-27 13:33:09      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

经过两天的研究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组件的鼠标跟踪

标签:

原文地址:http://www.cnblogs.com/first-semon/p/5912342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!