#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QToolBar>
Widget::Widget(QWidget *parent) :
QWidget(parent),
map(nullptr),
pCMapXPoint(nullptr),pCMapXPoint1(nullptr),pCMapXPoint2(nullptr),
pCMapFeaFactory(nullptr),
pCMapXFeature(nullptr),
pCMapStyle(nullptr),
pCMapLayers(nullptr),
pCMapLayer(nullptr),
pCMapLine(nullptr),
pCMapPoints(nullptr),
pCMapParts(nullptr),
pCMapArc(nullptr),
pCMapXFeatureRegoin(nullptr),
//坐标的变化
pCMapXCoordSys(nullptr),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->resize(1000,800);
QPushButton *pButton = new QPushButton("tool",this);
pButton->resize(70,23);
//建立一个地图
map = new MapSpace::Map("",this);
//设置大小属性
map->move(QPoint(10,25));
map->resize(QSize(size().width()-20,size().height()-20));
map->SetCurrentTool(MapSpace::ToolConstants::miPanTool);//鼠标工具
map->setProperty("MousewheelSupport",2);//支持滚轮
/* 显示一个小图标(旗子模样)*/
pCMapLayers = map->Layers();
pCMapLayers->AddGeoSetLayers("C:/mapx/MapX4/Maps/Captial.gst");
pCMapLayer = pCMapLayers->CreateLayer("test");
pCMapFeaFactory = map->FeatureFactory();
//划一个区域。regoin
pCMapXFeatureRegoin = pCMapFeaFactory->CreateRegion();//创建一个区域feature
pCMapPoints = new MapSpace::CMapXPoints;
pCMapPoints->setControl("MapX.Points.4");
pCMapParts = pCMapXFeatureRegoin->Parts();
pCMapXPoint = pCMapPoints->AddXY(120.07372, 29.35792);
pCMapXPoint1 = pCMapPoints->AddXY(120.07270, 29.35780);
pCMapXPoint2 = pCMapPoints->AddXY(120.07000, 29.35000);
pCMapStyle = pCMapXFeatureRegoin->Style();
//pCMapStyle->setControl("Mapx.Style.4");
//pCMapStyle->SetRegionBackColor(200);
//pCMapStyle->SetLineColor(117);
pCMapStyle->SetRegionBorderWidthUnit(MapSpace::StyleUnitConstants::miStyleUnitTenthsOfPoint);
pCMapStyle->SetRegionBorderWidth(35);//边界线条宽度,与上方函数一起使用
pCMapStyle->SetRegionBorderColor(243);//边界颜色
pCMapStyle->SetRegionColor(123);//背景颜色
// pCMapStyle->SetRegionStyle(MapSpace::miPenSolid);
pCMapStyle->SetRegionPattern(MapSpace::miPatternCross);
//pCMapStyle->SetRegionTransparent(true);//用于至少两个图元之间
pCMapParts->Add(pCMapPoints->asVariant().value<IDispatch*>());
pCMapLayer->AddFeature(pCMapXFeatureRegoin->asVariant().value<IDispatch*>());
map->ZoomTo(200,120.06272, 29.35522);
}
在加上圆形的图元
1 void MainWindow::CMapxInit(){
2 widget = new QAxWidget(this);
3 widget->setControl(QString::fromUtf8("{9D6ED188-5910-11D2-98A6-00A0C9742CCA}"));
4 widget->resize(size().width(),size().height());
5
6 pCMapX = new CMapX(widget->asVariant().value<IDispatch*>());
7 pCMapXLayer = pCMapX->Layers()->CreateLayer("aaa");
8
9 pCMapXFeatureFactory = pCMapX->FeatureFactory();
10 pCMapXFeaturePoint = pCMapXFeatureFactory->CreateSymbol();
11
12 pCMapXPoint = pCMapXFeaturePoint->Point();
13 pCMapXPoint->Set(120.06872,29.35692);
14 //算出外接矩形的两个角坐标,一个在X轴上,一个在Y轴上
15
16 pCMapXFeatureCircularRegion = pCMapXFeatureFactory->CreateCircularRegion(miCircleTypeMap,pCMapXPoint->asVariant().value<IDispatch*>(),1,0,1000);
17 pStyle = pCMapXFeatureCircularRegion->Style();
18 pStyle->SetRegionColor(QColor(255,0,0));
19
20 pCMapXLayer->AddFeature(pCMapXFeatureCircularRegion->asVariant().value<IDispatch*>());
21
22 pCMapX->ZoomTo(10,120.06872,29.35692);
23 }