qt调用mapx遇到的问题

白日_焰火 2019-02-20 11:42:54
在使用mapx的过程中出现问题,当我不传入jd,wd时,每次打开子窗口都能正常显示,如下图1,当我传入数据后,关闭子窗口在打开会显示图2,注释掉自定义的drawPoint()函数后又不会出现上述问题。子窗口的代码如下:

#define ERROR_RANGE 0.00001 //误差范围

MapWidget::MapWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MapWidget)
{
ui->setupUi(this);

map = new Map("MAPS",this);

map->move(QPoint(0,0));
// map->SetGeoSet("D:/MapX/Maps/ASIA.gst");
map->SetGeoSet("F:/test/QT5.2/test_mapx/src/maps/2013.gst");
map->SetTitleText("");
map->resize(QSize(size().width(),size().height()));
map->SetCurrentTool(ToolConstants::miPanTool);
map->setProperty("MousewheelSupport",miMousewheelNoAutoScroll);
map->SetAutoRedraw(true);

pCMapLayers = map->Layers();
pCMapLayer = pCMapLayers->CreateLayer("test");
pCMapFeaFactory = map->FeatureFactory();

setCenter(map);

}

MapWidget::~MapWidget()
{
delete map;
delete ui;
}
/****** 位置定点的函数 ******/
void MapWidget::drawPoint()
{
/****** 下列代码是导致 接收数据定点后,无法重新打开mapx 的原因 ******/
pCMapXcharacter = pCMapFeaFactory->CreateSymbol();
pCMapXPoint = pCMapXcharacter->Point();
pCMapXPoint->Set(latitude, longitude);
pCMapStyle = pCMapXcharacter->Style();
pCMapStyle->SetSymbolCharacter(46);
pCMapStyle->TextFont().setPixelSize(1000);
pCMapStyle->SetSymbolFontColor(QColor(255,0,0));
Font = pCMapStyle->SymbolFont();
Font.setBold(true);
pCMapLayer->AddFeature(pCMapXcharacter->asVariant().value<IDispatch*>());
}
/****** 初始化地图中心 ******/
void MapWidget::setCenter(Map *map)
{
map->ZoomTo(50,104.65, 31.5124);
}
void MapWidget::setcoordinate(double wd,double jd)
{
if(jd==latitude&&wd==longitude){
qDebug()<<"same as last data";
return;
}
/****** 判断是否在误差范围内 ******/
if(qFabs(jd-latitude)<ERROR_RANGE&&qFabs(wd-longitude)<ERROR_RANGE){
qDebug()<<"in the range of error";
return;
}
latitude = jd;
longitude = wd;
qDebug()<<"coordinate:"<<latitude<<longitude;
/****** 下列1行代码是造成 接收数据后无法打开mapx 的原因 ******/
drawPoint();

map->SetZoom(5);
// map->ZoomTo(5,latitude, longitude);//造成闪烁的原因
}
/****** 打开select map窗口选择的文件 ******/
void MapWidget::setMapWidget(QString url)
{
map->SetGeoSet(url);
map->SetTitleText("");
}
...全文
154 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧