diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp index b627da29ad8cab89894939e45297c8d32b17e353..6263ed336740b293fb2c80c9f481b0097a0e0257 100644 --- a/src/imports/location/qdeclarativegeomap.cpp +++ b/src/imports/location/qdeclarativegeomap.cpp @@ -1088,13 +1088,13 @@ void QDeclarativeGeoMap::fitViewportToMapItemsRefine(bool refine) double bottomRightY = 0; // find bounds of all map items - QGeoCoordinate geoCenter; - QDoubleVector2D centerPt; int itemCount = 0; for (int i = 0; i < mapItems_.count(); ++i) { if (!mapItems_.at(i)) continue; QDeclarativeGeoMapItemBase *item = mapItems_.at(i).data(); + if (!item) + continue; // skip quick items in the first pass and refine the fit later if (refine) { @@ -1104,26 +1104,11 @@ void QDeclarativeGeoMap::fitViewportToMapItemsRefine(bool refine) continue; } - // account for the special case - circle - QDeclarativeCircleMapItem *circleItem = - qobject_cast<QDeclarativeCircleMapItem *>(item); + topLeftX = item->position().x(); + topLeftY = item->position().y(); + bottomRightX = topLeftX + item->width(); + bottomRightY = topLeftY + item->height(); - if ((!circleItem || !circleItem->center().isValid()) && !item) - continue; - if (circleItem) { - geoCenter = circleItem->center(); - centerPt = map_->coordinateToScreenPosition(geoCenter, false); - topLeftX = centerPt.x() - circleItem->width() / 2.0; - topLeftY = centerPt.y() - circleItem->height() / 2.0; - bottomRightX = centerPt.x() + circleItem->width() / 2.0; - bottomRightY = centerPt.y() + circleItem->height() / 2.0; - } else if (item) { - topLeftX = item->position().x(); - topLeftY = item->position().y(); - bottomRightX = topLeftX + item->width(); - bottomRightY = topLeftY + item->height(); - ++itemCount; - } if (itemCount == 0) { minX = topLeftX; maxX = bottomRightX;