Добрый день Уважаемые разработчики.
Сейчас работаю над возможностью градиентной заливки.
Столкнулся с такой проблемой:
При использовании функции mapBuildMtq на карте подольска все очень хорошо закрашивается и получается очень красивый рисунок.
Но, когда я применяю ту же самую функцию для закрашивания карты миры, то программа начинает ООООчень долго думать и порой просто не дожидаешься конца операции.
Пробовал делать больше "стороны элементарного участка", делал до 5-10 км, но тогда вся карта в квадратах и ни о какой плавности речи не идет.
У меня 2 вопроса:
1. как можно увеличить скорость работы при максимальном сохранении плавности (понимаю, что эти вещи взаимоисключающие, но все же)
2. Не нашел функции для того, что бы сделать слой mtq полупрозрачным (нашел только mtr), есть ли он?
Вот код:
Заполняю массивы:
Вызов:
Функция:
Сейчас работаю над возможностью градиентной заливки.
Столкнулся с такой проблемой:
При использовании функции mapBuildMtq на карте подольска все очень хорошо закрашивается и получается очень красивый рисунок.
Но, когда я применяю ту же самую функцию для закрашивания карты миры, то программа начинает ООООчень долго думать и порой просто не дожидаешься конца операции.
Пробовал делать больше "стороны элементарного участка", делал до 5-10 км, но тогда вся карта в квадратах и ни о какой плавности речи не идет.
У меня 2 вопроса:
1. как можно увеличить скорость работы при максимальном сохранении плавности (понимаю, что эти вещи взаимоисключающие, но все же)
2. Не нашел функции для того, что бы сделать слой mtq полупрозрачным (нашел только mtr), есть ли он?
Вот код:
Заполняю массивы:
Код |
---|
void NativeMap::setArrays(QList<LATLONH> *llh, QList<COLORREF> *cr) { for (int i = 0; i < 1000; i++) { LATLONH q; double x = width * ((double) rand() / (double) RAND_MAX); double y = height * ((double) rand() / (double) RAND_MAX); wrapper->mapPictureToPlane(hMap, &x,&y); wrapper->mapPlaneToGeo(hMap, &x, &y); q.lat = x; q.lon = y; q.h = i; llh->append(q); } for (int i = 0; i < 255; i++) { cr->append(RGB(i, 00, 255)); } } |
Вызов:
Код |
---|
map->drawPalitra(llh, cr, 500, mtqFile); |
Функция:
Код |
---|
void NativeMap::drawPalitra(QList<LATLONH> latlonh, QList<COLORREF> rgb, int sizeSmall, QString path) { #ifdef Q_OS_WIN char* pathChar = cyr_detect_and_convert( path.toUtf8().data(), CYR_TABLE_WIN); #else char pathChar[255]; strncpy(pathChar, path.toUtf8().data(), 255); #endif //Q_OS_WIN int countXYH = latlonh.count(); int countRGB = rgb.count(); XYHDOUBLE mtqData[countXYH]; for (int i = 0; i < countXYH; i++) { LATLONH tmplatlonh; XYHDOUBLE tmpData; tmplatlonh = latlonh.at(i); double x = tmplatlonh.lat; double y = tmplatlonh.lon; wrapper->mapGeoToPlane(hMap, &x, &y); tmpData.X = x; tmpData.Y = y; tmpData.H = tmplatlonh.h; mtqData[i] = tmpData; } COLORREF cr[countRGB]; for (int i = 0; i < countRGB; i++) { cr[i] = rgb.at(i); } if(wrapper->mapBuildMtq(hMap, pathChar, &cr[0], countRGB, &mtqData[0], countXYH, sizeSmall, 0, countXYH, NULL)) { qDebug() << "OK mtq"; } else { qDebug() << "error mtq"; } wrapper->mapOpenMtqForMap(hMap, pathChar, 0); wrapper->mapSetMtqViewOrder(hMap,1,1); } |