|
|
@ -37,9 +37,9 @@ namespace core { |
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// timeout for map connections
|
|
|
|
/// timeout for map connections
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
QNetworkProxyFactory::setUseSystemConfiguration(true); |
|
|
|
|
|
|
|
|
|
|
|
Proxy.setType(QNetworkProxy::NoProxy); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets the value of the User-agent HTTP header.
|
|
|
|
/// Gets or sets the value of the User-agent HTTP header.
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
@ -90,6 +90,12 @@ namespace core { |
|
|
|
|
|
|
|
|
|
|
|
void UrlFactory::TryCorrectGoogleVersions() |
|
|
|
void UrlFactory::TryCorrectGoogleVersions() |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
static bool versionRetrieved = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (versionRetrieved)
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
QMutexLocker locker(&mutex); |
|
|
|
QMutexLocker locker(&mutex); |
|
|
|
if(CorrectGoogleVersions && !IsCorrectGoogleVersions()) |
|
|
|
if(CorrectGoogleVersions && !IsCorrectGoogleVersions()) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -106,8 +112,8 @@ namespace core { |
|
|
|
#ifdef DEBUG_URLFACTORY |
|
|
|
#ifdef DEBUG_URLFACTORY |
|
|
|
qDebug()<<"Correct GoogleVersion"; |
|
|
|
qDebug()<<"Correct GoogleVersion"; |
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
setIsCorrectGoogleVersions(true); |
|
|
|
//setIsCorrectGoogleVersions(true);
|
|
|
|
QString url = "http://maps.google.com"; |
|
|
|
QString url = "https://maps.google.com"; |
|
|
|
|
|
|
|
|
|
|
|
qheader.setUrl(QUrl(url)); |
|
|
|
qheader.setUrl(QUrl(url)); |
|
|
|
qheader.setRawHeader("User-Agent",UserAgent); |
|
|
|
qheader.setRawHeader("User-Agent",UserAgent); |
|
|
@ -125,18 +131,19 @@ namespace core { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
QString html=QString(reply->readAll()); |
|
|
|
QString html=QString(reply->readAll()); |
|
|
|
QRegExp reg("\"*http://mt0.google.com/vt/lyrs=m@(\\d*)",Qt::CaseInsensitive); |
|
|
|
QRegExp reg("\"*https://mts0.google.com/vt/lyrs=m@(\\d*)",Qt::CaseInsensitive); |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
VersionGoogleMap = QString("m@%1").arg(gc[1]); |
|
|
|
VersionGoogleMap = QString("m@%1").arg(gc[1]); |
|
|
|
VersionGoogleMapChina = VersionGoogleMap; |
|
|
|
VersionGoogleMapChina = VersionGoogleMap; |
|
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG_URLFACTORY |
|
|
|
#ifdef DEBUG_URLFACTORY |
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleMap: "<<VersionGoogleMap; |
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleMap: "<<VersionGoogleMap; |
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
reg=QRegExp("\"*http://mt0.google.com/vt/lyrs=h@(\\d*)",Qt::CaseInsensitive); |
|
|
|
reg = QRegExp("\"*https://mts0.google.com/vt/lyrs=h@(\\d*)",Qt::CaseInsensitive); |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
@ -146,18 +153,17 @@ namespace core { |
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleLabels: "<<VersionGoogleLabels; |
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleLabels: "<<VersionGoogleLabels; |
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
} |
|
|
|
} |
|
|
|
reg=QRegExp("\"*http://khm0.google.com/kh/v=(\\d*)",Qt::CaseInsensitive); |
|
|
|
reg=QRegExp("\"*https://khms0.google.com/kh/v=(\\d*)",Qt::CaseInsensitive); |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
VersionGoogleSatellite = gc[1]; |
|
|
|
VersionGoogleSatellite = gc[1]; |
|
|
|
VersionGoogleSatelliteKorea = VersionGoogleSatellite; |
|
|
|
VersionGoogleSatelliteKorea = VersionGoogleSatellite; |
|
|
|
VersionGoogleSatelliteChina = "s@" + VersionGoogleSatellite; |
|
|
|
VersionGoogleSatelliteChina = "s@" + VersionGoogleSatellite; |
|
|
|
|
|
|
|
|
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleSatellite: "<<VersionGoogleSatellite; |
|
|
|
qDebug()<<"TryCorrectGoogleVersions, VersionGoogleSatellite: "<<VersionGoogleSatellite; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
reg=QRegExp("\"*http://mt0.google.com/vt/lyrs=t@(\\d*),r@(\\d*)",Qt::CaseInsensitive); |
|
|
|
reg=QRegExp("\"*https://mts0.google.com/vt/lyrs=t@(\\d*),r@(\\d*)",Qt::CaseInsensitive); |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
if(reg.indexIn(html)!=-1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
|
QStringList gc=reg.capturedTexts(); |
|
|
@ -168,7 +174,7 @@ namespace core { |
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
#endif //DEBUG_URLFACTORY
|
|
|
|
} |
|
|
|
} |
|
|
|
reply->deleteLater(); |
|
|
|
reply->deleteLater(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
@ -182,48 +188,50 @@ namespace core { |
|
|
|
{ |
|
|
|
{ |
|
|
|
case MapType::GoogleMap: |
|
|
|
case MapType::GoogleMap: |
|
|
|
{ |
|
|
|
{ |
|
|
|
QString server = "mt"; |
|
|
|
QString server = "mts"; |
|
|
|
QString request = "vt"; |
|
|
|
QString request = "vt"; |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMap).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("https://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMap).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MapType::GoogleSatellite: |
|
|
|
case MapType::GoogleSatellite: |
|
|
|
{ |
|
|
|
{ |
|
|
|
QString server = "khm"; |
|
|
|
QString server = "khms"; |
|
|
|
QString request = "kh"; |
|
|
|
QString request = "kh"; |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatellite).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
|
|
|
|
|
|
|
|
return QString("https://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatellite).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MapType::GoogleLabels: |
|
|
|
case MapType::GoogleLabels: |
|
|
|
{ |
|
|
|
{ |
|
|
|
QString server = "mt"; |
|
|
|
QString server = "mts"; |
|
|
|
QString request = "vt"; |
|
|
|
QString request = "vt"; |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabels).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("https://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabels).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MapType::GoogleTerrain: |
|
|
|
case MapType::GoogleTerrain: |
|
|
|
{ |
|
|
|
{ |
|
|
|
QString server = "mt"; |
|
|
|
QString server = "mts"; |
|
|
|
QString request = "vt"; |
|
|
|
QString request = "vt"; |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrain).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
|
|
|
|
|
|
|
|
return QString("https://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrain).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MapType::GoogleMapChina: |
|
|
|
case MapType::GoogleMapChina: |
|
|
@ -235,7 +243,7 @@ namespace core { |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
// http://mt0.google.cn/vt/v=w2.101&hl=zh-CN&gl=cn&x=12&y=6&z=4&s=Ga
|
|
|
|
// http://mt0.google.cn/vt/v=w2.101&hl=zh-CN&gl=cn&x=12&y=6&z=4&s=Ga
|
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.google.cn/%3/lyrs=%4&hl=%5&gl=cn&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMapChina).arg("zh-CN").arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("http://%1%2.google.cn/%3/lyrs=%4&hl=%5&gl=cn&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMapChina).arg("zh-CN").arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -273,6 +281,7 @@ namespace core { |
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
TryCorrectGoogleVersions(); |
|
|
|
|
|
|
|
|
|
|
|
// http://mt0.google.cn/vt/v=w2p.110&hl=zh-CN&gl=cn&x=12&y=6&z=4&s=Ga
|
|
|
|
// http://mt0.google.cn/vt/v=w2p.110&hl=zh-CN&gl=cn&x=12&y=6&z=4&s=Ga
|
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&gl=cn&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrainChina).arg("zh-CN").arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&gl=cn&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrainChina).arg("zh-CN").arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
@ -285,10 +294,10 @@ namespace core { |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
|
|
|
|
|
|
|
|
//http://mt3.gmaptiles.co.kr/mt/v=kr1.11&hl=lt&x=109&y=49&z=7&s=
|
|
|
|
//http://mt3.gmaptiles.co.kr/mt/v=kr1.11&hl=lt&x=109&y=49&z=7&s=
|
|
|
|
|
|
|
|
|
|
|
|
QString ret = QString("http://%1%2.gmaptiles.co.kr/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMapKorea).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
QString ret = QString("https://%1%2.gmaptiles.co.kr/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMapKorea).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -299,7 +308,7 @@ namespace core { |
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec1 = ""; // after &x=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
QString sec2 = ""; // after &zoom=...
|
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
GetSecGoogleWords(pos, sec1, sec2); |
|
|
|
|
|
|
|
|
|
|
|
// http://khm1.google.co.kr/kh/v=54&x=109&y=49&z=7&s=
|
|
|
|
// http://khm1.google.co.kr/kh/v=54&x=109&y=49&z=7&s=
|
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.google.co.kr/%3/v=%4&x=%5%6&y=%7&z=%8&s=%9").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatelliteKorea).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("http://%1%2.google.co.kr/%3/v=%4&x=%5%6&y=%7&z=%8&s=%9").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatelliteKorea).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
@ -315,7 +324,7 @@ namespace core { |
|
|
|
|
|
|
|
|
|
|
|
// http://mt1.gmaptiles.co.kr/mt/v=kr1t.11&hl=lt&x=109&y=50&z=7&s=G
|
|
|
|
// http://mt1.gmaptiles.co.kr/mt/v=kr1t.11&hl=lt&x=109&y=50&z=7&s=G
|
|
|
|
|
|
|
|
|
|
|
|
return QString("http://%1%2.gmaptiles.co.kr/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabelsKorea).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
return QString("https://%1%2.gmaptiles.co.kr/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabelsKorea).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MapType::YahooMap: |
|
|
|
case MapType::YahooMap: |
|
|
|