diff --git a/platform/qt/include/qmapboxgl.hpp b/platform/qt/include/qmapboxgl.hpp index 0042a73dd..65f038ad7 100644 --- a/platform/qt/include/qmapboxgl.hpp +++ b/platform/qt/include/qmapboxgl.hpp @@ -6,6 +6,7 @@ #include class QImage; +class QMargins; class QSize; class QString; class QStringList; @@ -170,6 +171,9 @@ public: QPointF pixelForCoordinate(const Coordinate &) const; Coordinate coordinateForPixel(const QPointF &) const; + void setMargins(const QMargins &margins); + QMargins margins() const; + public slots: void render(); void connectionEstablished(); diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 12b36dd97..1992f9aad 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -140,22 +141,22 @@ void QMapboxGL::setStyleURL(const QString &url) double QMapboxGL::latitude() const { - return d_ptr->mapObj->getLatLng().latitude; + return d_ptr->mapObj->getLatLng(d_ptr->margins).latitude; } void QMapboxGL::setLatitude(double latitude_) { - d_ptr->mapObj->setLatLng(mbgl::LatLng { latitude_, longitude() }); + d_ptr->mapObj->setLatLng(mbgl::LatLng { latitude_, longitude() }, d_ptr->margins); } double QMapboxGL::longitude() const { - return d_ptr->mapObj->getLatLng().longitude; + return d_ptr->mapObj->getLatLng(d_ptr->margins).longitude; } void QMapboxGL::setLongitude(double longitude_) { - d_ptr->mapObj->setLatLng(mbgl::LatLng { latitude(), longitude_ }); + d_ptr->mapObj->setLatLng(mbgl::LatLng { latitude(), longitude_ }, d_ptr->margins); } double QMapboxGL::scale() const @@ -175,7 +176,7 @@ double QMapboxGL::zoom() const void QMapboxGL::setZoom(double zoom_) { - d_ptr->mapObj->setZoom(zoom_); + d_ptr->mapObj->setZoom(zoom_, d_ptr->margins); } double QMapboxGL::minimumZoom() const @@ -190,18 +191,19 @@ double QMapboxGL::maximumZoom() const QMapboxGL::Coordinate QMapboxGL::coordinate() const { - const mbgl::LatLng& latLng = d_ptr->mapObj->getLatLng(); + const mbgl::LatLng& latLng = d_ptr->mapObj->getLatLng(d_ptr->margins); return Coordinate(latLng.latitude, latLng.longitude); } void QMapboxGL::setCoordinate(const Coordinate &coordinate_) { - d_ptr->mapObj->setLatLng(mbgl::LatLng { coordinate_.first, coordinate_.second }); + d_ptr->mapObj->setLatLng(mbgl::LatLng { coordinate_.first, coordinate_.second }, d_ptr->margins); } void QMapboxGL::setCoordinateZoom(const Coordinate &coordinate_, double zoom_) { - d_ptr->mapObj->setLatLngZoom(mbgl::LatLng { coordinate_.first, coordinate_.second }, zoom_); + d_ptr->mapObj->setLatLngZoom( + mbgl::LatLng { coordinate_.first, coordinate_.second }, zoom_, d_ptr->margins); } double QMapboxGL::bearing() const @@ -211,7 +213,7 @@ double QMapboxGL::bearing() const void QMapboxGL::setBearing(double degrees) { - d_ptr->mapObj->setBearing(degrees); + d_ptr->mapObj->setBearing(degrees, d_ptr->margins); } void QMapboxGL::setBearing(double degrees, const QPointF ¢er) @@ -456,6 +458,26 @@ QMapboxGL::Coordinate QMapboxGL::coordinateForPixel(const QPointF &pixel) const return Coordinate(latLng.latitude, latLng.longitude); } +void QMapboxGL::setMargins(const QMargins &margins_) +{ + d_ptr->margins = { + static_cast(margins_.top()), + static_cast(margins_.left()), + static_cast(margins_.bottom()), + static_cast(margins_.right()) + }; +} + +QMargins QMapboxGL::margins() const +{ + return QMargins( + d_ptr->margins.left, + d_ptr->margins.top, + d_ptr->margins.right, + d_ptr->margins.bottom + ); +} + void QMapboxGL::render() { d_ptr->mapObj->render(); diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index dec776c06..93da4089a 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -33,6 +34,7 @@ public: void invalidate() final; void notifyMapChange(mbgl::MapChange change) final; + mbgl::EdgeInsets margins; QSize size; QMapboxGL *q_ptr = nullptr;