Advertisement
Guest User

Untitled

a guest
Jan 10th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include "mapscanner.h"
  3. #include "MyBrowser.h"
  4. #include "scanner.h"
  5. #include <QtCore/QtMath>
  6. #include <QColor>
  7. //Для z=17 4820 326.97
  8. //Для z=18 2415 161.09
  9.  
  10. //https://static-maps.yandex.ru/1.x/?ll=30.3607,59.9280982&size=256,256&z=17&l=sat&pt=37.620070,55.753630,~30.3607,59.9280982,pmblm99,~30.3607,59.9280692,pmorm99
  11. //https://maps.googleapis.com/maps/api/staticmap?center=59.9280982,30.3661&zoom=17&maptype=satellite&size=256x256&markers=color:red%7C59.9280982,30.3661&scale=2key=
  12. //http://dev.virtualearth.net/REST/V1/Imagery/Map/Aerial/59.9280982%2C30.3661/17?mapSize=256,256&imagerySet=AerialWithLabels&format=png&pushpin=59.9280982,30.3661;60;&key=Ah12kIOAYzmW3ONiCcYEImWIp2xL8pwMXEvlOjhzjLRhjBBOCgBygJe4PHOY_aKU
  13. #define _CRT_SECURE_NO_WARNINGS
  14.  
  15. double eps = sqrt(pow(6378, 2) - pow(6356, 2)) / (6378);
  16. double Delta = 0.002746368;
  17. int check = -1;
  18. int CountWidth = 0;
  19. int CountHeight = 0;
  20. MapScanner::MapScanner(QWidget *parent)
  21.     : QDialog(parent), m_renderPixmap(2048, 2048)
  22. {
  23.     ui.setupUi(this);
  24.  
  25.     MyView = new QWebEngineView();
  26.     MyView->setGeometry(1000, 500, ui.SizeX->text().toFloat(), ui.SizeY->text().toFloat());
  27.     MyTimer = new QTimer();
  28.     connect(ui.MyButton, &QPushButton::clicked, [&]()
  29.     {
  30.         MyTimer->start(1);
  31.     });
  32.     MyTimer->setSingleShot(true);
  33.     connect(MyTimer, &QTimer::timeout, [&]()
  34.     {
  35.         SaveImages();
  36.         QUrl UrlYandex("https://static-maps.yandex.ru/1.x/?ll=" + ui.EarthWidth->text() + ',' + ui.EarthHeight->text() + "&size=" + ui.SizeX->text() + ',' + ui.SizeY->text() + "&z=17&l=sat&pt=37.620070,55.753630,pmwtm1~37.64,55.76363,pmwtm99");
  37.         QUrl UrlGoodle("https://maps.googleapis.com/maps/api/staticmap?center=" + ui.EarthHeight->text() + ',' + ui.EarthWidth->text() + "&zoom=17&maptype=satellite&size=" + ui.SizeX->text() + 'x' + ui.SizeY->text() + "&scale=2key=");
  38.         QUrl UrlBing("http://dev.virtualearth.net/REST/V1/Imagery/Map/Aerial/" + ui.EarthHeight->text() + "%2C" + ui.EarthWidth->text() + "/17?mapSize=" + ui.SizeX->text() + ',' + ui.SizeY->text() + "&imagerySet=AerialWithLabels&format=png&key=Ah12kIOAYzmW3ONiCcYEImWIp2xL8pwMXEvlOjhzjLRhjBBOCgBygJe4PHOY_aKU");
  39.  
  40.         if (ui.GoogleUrl->isChecked())
  41.             MyView->load(QUrl(UrlGoodle));
  42.         if (ui.YandexUrl->isChecked())
  43.             MyView->load(QUrl(UrlYandex));
  44.         if (ui.BingUrl->isChecked())
  45.             MyView->load(QUrl(UrlBing));
  46.  
  47.         double k = ui.EarthHeight->text().toDouble();
  48.         double k2 = ui.EarthHeight2->text().toDouble();
  49.         double kRad = k / 180 * M_PI;
  50.         double kdelta = Delta*(0.5*cos(kRad)*(pow(eps, 2)* (cos(2 * kRad) - 1) + 2)) / (1);
  51.         double w = ui.EarthWidth->text().toDouble();
  52.         double w2 = ui.EarthWidth2->text().toDouble();
  53.  
  54.         if (w < w2 + 2 * Delta + Delta*(ui.LineSize->text().toDouble()) / 326.97)
  55.         {
  56.             w += Delta;
  57.             ui.EarthWidth->setText(QString::number(w));
  58.             check++;
  59.             CountWidth++;
  60.             MyTimer->start(3000);
  61.         }
  62.         else
  63.         {
  64.             if (k > k2 + 2 * kdelta + kdelta*(ui.LineSize->text().toDouble()) / 326.97)
  65.             {
  66.                 k -= kdelta;
  67.                 ui.EarthHeight->setText(QString::number(k));
  68.                 check++;
  69.                 CountHeight++;
  70.                 MyTimer->start(3000);
  71.             }
  72.             else
  73.             {
  74.                 MyView->close();
  75.                 MyTimer->stop();
  76.             }
  77.         }
  78.        
  79.     });
  80.    
  81. }
  82.  
  83. MapScanner::~MapScanner()
  84. {
  85.    
  86. }
  87.  
  88. void MapScanner::SaveImages()
  89. {
  90.     QPixmap pic(MyView->size());
  91.     MyView->show();
  92.     MyView->render(&pic);
  93.     pic.save(ui.SavePath->text() + "img" + QString::number(check) + ".png");
  94.     ui.lineEdit->setText(QString::number(CountWidth) + QString::number(CountHeight));
  95.    
  96.     m_renderPixmap.load(ui.SavePath->text() + "newfile.png"); // создаём картинку
  97.     QPainter p(&m_renderPixmap); // создаём рисовалку и нацеливаем её на картинку
  98.     p.drawPixmap(256 * CountWidth, 256 * CountHeight, QPixmap(ui.SavePath->text() + "img" + QString::number(check) + ".png")); // накладываем изображение из файла на эту картинку в координаты 0,0
  99.     p.end(); // завершаем работу рисовалки
  100.     m_renderPixmap.save(ui.SavePath->text() + "newfile.png", "PNG"); // сохраняем файл
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement