QGCLocationPlugin
定义了QGCLocationPlugin.pri文件,这个文件包含QtLocationPlugin文件夹里面的头文件和源文件
在main.cc文件中,include “QGCMapEngine.h”,这个头文件与Qt项目中总体头文件不在一个目录中,但是之所以能直接包含,就是因为在.pro文件中include QGCLocationPlugin.pri。
main.cc中getQGCMapEngine()
在main.cc中使用了这个getQGCMapEngine()->init(),不是对象或者类调用,经过追代码发现是在QGC。
extern QGCMapEngine * getQGCMapEngine();
extern void destroyMapEngine();
1️⃣当extern 与C一起使用,如extern “C” void func(int a,int b);则告诉编译器在编译func这个函数名字的时候;
2️⃣当extern 不与C一起使用的时候,如在头文件extern int g_int,它的作用就是声明函数或者全局变量,其声明的函数和变量可以在本模块或者其他模块中使用。是声明而不是定义。
QGCMapEngine.cpp中定义了
kMapTypes[]={}
kMapboxTypes[]={}
kEsriTypes[]={}
getQGCMapEngine()
static QGCMapEngine *kMapEngine=null;
QGCMapEngine *getQGCMapEngine(){
if(!kMapEngine)
kMapEngine=new QGCMapEngine();
return kMapEngine;
}
destroyMapEngine()
void destroyMapEngine()(){
if(kMapEngine)
kMapEngine=null;
}
地图的表示
struct stQGeoTileCacheQGCMapTypes{
const char * name;
UrlFactory::Maptype type;
}
QGCMapEngine
//构造方法中给_urlFactory赋值
QGCMapEngine::QGCMapEngine():_urlFactory(new UrlFactory())
_userAgent()
,_maxDiskCache(0)
,_prunning(false)
,_cacheWasReset(false)
,_isInternetActive(false)
//注册
qRegisterMetaType