1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

OP37/GCS MapLib Added offline map creator

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1198 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
zedamota 2010-08-02 23:10:28 +00:00 committed by zedamota
parent fa12f2c0b5
commit 03800c418a
5 changed files with 40 additions and 25 deletions

View File

@ -36,7 +36,7 @@ namespace core {
m_pInstance=new OPMaps;
return m_pInstance;
}
OPMaps::OPMaps():MaxZoom(19),RetryLoadTile(2),useMemoryCache(true)
OPMaps::OPMaps():RetryLoadTile(2),useMemoryCache(true)
{
accessmode=AccessMode::ServerAndCache;
Language=LanguageType::PortuguesePortugal;

View File

@ -39,6 +39,7 @@
#include "pureimagecache.h"
#include "alllayersoftype.h"
#include "urlfactory.h"
//#include "point.h"
@ -66,7 +67,6 @@ namespace core {
LanguageType::Types GetLanguage(){return Language;}//TODO
AccessMode::Types GetAccessMode()const{return accessmode;}
void setAccessMode(const AccessMode::Types& mode){accessmode=mode;}
int MaxZoom;
int RetryLoadTile;
private:
bool useMemoryCache;

View File

@ -27,6 +27,7 @@
#include "pureimagecache.h"
#include <QDateTime>
//#define DEBUG_PUREIMAGECACHE
namespace core {
qlonglong PureImageCache::ConnCounter=0;
@ -49,7 +50,7 @@ QString PureImageCache::GtileCache()
bool PureImageCache::CreateEmptyDB(const QString &file)
{
#ifdef DEBUG_PUREIMAGECACHE
qDebug()<<"Create database at:"<<file;
qDebug()<<"Create database at!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:"<<file;
#endif //DEBUG_PUREIMAGECACHE
QFileInfo File(file);
QDir dir=File.absoluteDir();
@ -156,6 +157,9 @@ bool PureImageCache::PutImageToCache(const QByteArray &tile, const MapType::Type
bool ret=true;
QDir d;
QString dir=gtilecache;
Mcounter.lock();
qlonglong id=++ConnCounter;
Mcounter.unlock();
#ifdef DEBUG_PUREIMAGECACHE
qDebug()<<"PutImageToCache Cache dir="<<dir;
qDebug()<<"PutImageToCache Cache dir="<<dir<<" Try to PUT:"<<pos.ToString();
@ -179,9 +183,7 @@ bool PureImageCache::PutImageToCache(const QByteArray &tile, const MapType::Type
if(ret)
{
QSqlDatabase cn;
Mcounter.lock();
qlonglong id=++ConnCounter;
Mcounter.unlock();
cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));
cn.setDatabaseName(db);
@ -205,7 +207,7 @@ bool PureImageCache::PutImageToCache(const QByteArray &tile, const MapType::Type
query.exec();
}
cn.close();
QSqlDatabase::removeDatabase(QString::number(id));
}
else return false;
}
@ -217,6 +219,7 @@ bool PureImageCache::PutImageToCache(const QByteArray &tile, const MapType::Type
return false;
}
}
QSqlDatabase::removeDatabase(QString::number(id));
return true;
}
QByteArray PureImageCache::GetImageFromCache(MapType::Types type, Point pos, int zoom)
@ -224,8 +227,11 @@ QByteArray PureImageCache::GetImageFromCache(MapType::Types type, Point pos, int
bool ret=true;
QByteArray ar;
QString dir=gtilecache;
Mcounter.lock();
qlonglong id=++ConnCounter;
Mcounter.unlock();
#ifdef DEBUG_PUREIMAGECACHE
qDebug()<<"Cache dir="<<dir<<" Try to GET:"<<pos.X()+","+pos.Y();
// qDebug()<<"Cache dir="<<dir<<" Try to GET:"<<pos.X()+","+pos.Y();
#endif //DEBUG_PUREIMAGECACHE
{
@ -234,9 +240,7 @@ QByteArray PureImageCache::GetImageFromCache(MapType::Types type, Point pos, int
if(ret)
{
QSqlDatabase cn;
Mcounter.lock();
qlonglong id=++ConnCounter;
Mcounter.unlock();
cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));
cn.setDatabaseName(db);
if(cn.open())
@ -254,9 +258,11 @@ QByteArray PureImageCache::GetImageFromCache(MapType::Types type, Point pos, int
cn.close();
}
QSqlDatabase::removeDatabase(QString::number(id));
}
}
QSqlDatabase::removeDatabase(QString::number(id));
return ar;
}
void PureImageCache::deleteOlderTiles(int const& days)
@ -264,9 +270,6 @@ void PureImageCache::deleteOlderTiles(int const& days)
QList<long> add;
bool ret=true;
QString dir=gtilecache;
#ifdef DEBUG_PUREIMAGECACHE
qDebug()<<"Cache dir="<<dir<<" Try to GET:"<<pos.X()+","+pos.Y();
#endif //DEBUG_PUREIMAGECACHE
{
QString db=dir+"Data.qmdb";

View File

@ -27,7 +27,7 @@
#include "tilecachequeue.h"
//#define DEBUG_TILECACHEQUEUE
namespace core {
TileCacheQueue::TileCacheQueue()
@ -42,12 +42,12 @@ TileCacheQueue::~TileCacheQueue()
void TileCacheQueue::EnqueueCacheTask(CacheItemQueue *task)
{
#ifdef DEBUG_TILECACHEQUEUE
qDebug()<<"DB Do I EnqueueCacheTask"<<task.GetPosition().X()<<","<<task.GetPosition().Y();
qDebug()<<"DB Do I EnqueueCacheTask"<<task->GetPosition().X()<<","<<task->GetPosition().Y();
#endif //DEBUG_TILECACHEQUEUE
if(!tileCacheQueue.contains(task))
{
#ifdef DEBUG_TILECACHEQUEUE
qDebug()<<"EnqueueCacheTask"<<task.GetPosition().X()<<","<<task.GetPosition().Y();
qDebug()<<"EnqueueCacheTask"<<task->GetPosition().X()<<","<<task->GetPosition().Y();
#endif //DEBUG_TILECACHEQUEUE
mutex.lock();
tileCacheQueue.enqueue(task);
@ -57,14 +57,17 @@ void TileCacheQueue::EnqueueCacheTask(CacheItemQueue *task)
#ifdef DEBUG_TILECACHEQUEUE
qDebug()<<"Wake Thread";
#endif //DEBUG_TILECACHEQUEUE
waitc.wakeOne();
this->start(QThread::NormalPriority);
//waitmutex.lock();
waitc.wakeAll();
//waitmutex.unlock();
}
else
{
#ifdef DEBUG_TILECACHEQUEUE
qDebug()<<"Start Thread";
#endif //DEBUG_TILECACHEQUEUE
this->start(QThread::LowestPriority);
this->start(QThread::NormalPriority);
}
}
@ -89,21 +92,30 @@ void TileCacheQueue::run()
qDebug()<<"Cache engine Put:"<<task->GetPosition().X()<<","<<task->GetPosition().Y();
#endif //DEBUG_TILECACHEQUEUE
Cache::Instance()->ImageCache.PutImageToCache(task->GetImg(),task->GetMapType(),task->GetPosition(),task->GetZoom());
QThread::usleep(44);
usleep(44);
delete task;
}
else
{
qDebug()<<"Cache engine BEGIN WAIT";
waitmutex.lock();
if(!waitc.wait(&waitmutex,4444))
int tout=4000;
if(!waitc.wait(&waitmutex,tout))
{
waitmutex.unlock();
#ifdef DEBUG_TILECACHEQUEUE
qDebug()<<"Cache Engine TimeOut";
#endif //DEBUG_TILECACHEQUEUE
if(tileCacheQueue.count()==0) break;
mutex.lock();
if(tileCacheQueue.count()==0)
{
mutex.unlock();
break;
}
mutex.unlock();
}
qDebug()<<"Cache Engine DID NOT TimeOut";
waitmutex.unlock();
}
}

View File

@ -41,7 +41,7 @@ UrlFactory::UrlFactory()
/// </summary>
UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7";
Timeout = 30 * 1000;
Timeout = 5 * 1000;
CorrectGoogleVersions=true;
isCorrectedGoogleVersions = false;
UseGeocoderCache=true;