105 void regenerateCache()
107 if (!m_poly.map() || m_poly.map()->geoProjection().projectionType() != QGeoProjection::ProjectionWebMercator)
109 const QGeoProjectionWebMercator &p =
static_cast<
const QGeoProjectionWebMercator&>(m_poly.map()->geoProjection());
110 m_geopathProjected.clear();
111 m_geopathProjected << QList<QDoubleVector2D>();
112 QList<QDoubleVector2D> &pP = m_geopathProjected.last();
113 if (m_poly.referenceSurface() == QLocation::ReferenceSurface::Globe) {
114 const QList<QGeoCoordinate> realPath = QDeclarativeGeoMapItemUtils::greaterCirclePath(m_poly.m_geopoly.perimeter(),
115 QDeclarativeGeoMapItemUtils::ClosedPath);
116 pP.reserve(realPath.size());
117 for (
const QGeoCoordinate &c : realPath)
118 pP << p.geoToMapProjection(c);
120 pP.reserve(m_poly.m_geopoly.perimeter().size());
121 const QList<QGeoCoordinate> perimeter = m_poly.m_geopoly.perimeter();
122 for (
const QGeoCoordinate &c : perimeter)
123 pP << p.geoToMapProjection(c);
125 for (
int i = 0; i < m_poly.m_geopoly.holesCount(); i++) {
126 m_geopathProjected << QList<QDoubleVector2D>();
127 QList<QDoubleVector2D> &pH = m_geopathProjected.last();
128 if (m_poly.referenceSurface() == QLocation::ReferenceSurface::Globe) {
129 const QList<QGeoCoordinate> realPath = QDeclarativeGeoMapItemUtils::greaterCirclePath(m_poly.m_geopoly.holePath(i),
130 QDeclarativeGeoMapItemUtils::ClosedPath);
131 pH.reserve(realPath.size());
132 for (
const QGeoCoordinate &c : realPath)
133 pH << p.geoToMapProjection(c);
135 pH.reserve(m_poly.m_geopoly.holePath(i).size());
136 const QList<QGeoCoordinate> holePath = m_poly.m_geopoly.holePath(i);
137 for (
const QGeoCoordinate &c : holePath)
138 pH << p.geoToMapProjection(c);
144 if (!m_poly.map() || m_poly.map()->geoProjection().projectionType() != QGeoProjection::ProjectionWebMercator)
146 const QGeoProjectionWebMercator &p =
static_cast<
const QGeoProjectionWebMercator&>(m_poly.map()->geoProjection());
147 QList<QDoubleVector2D> &pP = m_geopathProjected.first();
148 if (m_poly.referenceSurface() == QLocation::ReferenceSurface::Globe && m_poly.m_geopoly.perimeter().size() > 1) {
151 pP << p.geoToMapProjection(m_poly.m_geopoly.perimeter().last());