Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: tailer73 от Декабрь 13, 2017, 21:46



Название: GUI с картами OSM на PyQt5
Отправлено: tailer73 от Декабрь 13, 2017, 21:46
Здравствуйте! Есть задача реализовать в десктопном приложении под Unix вот такие возможности:
1)Отображение карты
2)Вывод на крату точек из БД по координатам

Приложение пишем с использованием PyQt5.
Прочитал документацию по классам QGeoServiceProvider, QLocation и QGeoCodingManager.
На текущий момент я так понял, что API для рендеринга карт есть только qml-ное.

Подскажите, как можно реализовать данный функционал? Какие виджеты использовать? Как использовать API OSM?


Название: Re: GUI с картами OSM на PyQt5
Отправлено: QuAzI от Декабрь 16, 2017, 21:41
Навалом же тем на русском с примерами
https://doc.qt.io/qt-5/location-plugin-osm.html
https://habrahabr.ru/post/233809/
https://habrahabr.ru/post/306076/
вообще http://lmgtfy.com/?q=qt+osm


Название: Re: GUI с картами OSM на PyQt5
Отправлено: tailer73 от Январь 07, 2018, 23:50
Во всех приведенных примерах используется QML.
А мне надо  без него сделать.

Если не сложно, подскажите каким виджетом можно отобразить карту и как использовать api OSM.


Название: Re: GUI с картами OSM на PyQt5
Отправлено: Larry от Март 06, 2018, 19:35
Дата конечно прошла...Пилили несколько лет назад, только на С++...К сожалению работа с картами осталась только под qml...В версиях 4.х был вроде бы виджет, но убрали. Мы делали через QWebView и javascript, но выяснилось, что если будет много точек, то будут ужасные тормоза...Лучшей вариант это qml компонент разместить на виджете...Пробовали, то при выводе пару сотен тысяч объектов тормозов не наблюдали...К сожалению исходники удалил...


Название: Re: GUI с картами OSM на PyQt5
Отправлено: tailer73 от Март 28, 2018, 00:45
Дата конечно прошла...Пилили несколько лет назад, только на С++...К сожалению работа с картами осталась только под qml...В версиях 4.х был вроде бы виджет, но убрали. Мы делали через QWebView и javascript, но выяснилось, что если будет много точек, то будут ужасные тормоза...Лучшей вариант это qml компонент разместить на виджете...Пробовали, то при выводе пару сотен тысяч объектов тормозов не наблюдали...К сожалению исходники удалил...

Спасибо за ответ. А что значит разместить qml объект на виджете? какой виджет вы использовали для этого?


Название: Re: GUI с картами OSM на PyQt5
Отправлено: tailer73 от Март 28, 2018, 02:32
Наконец-то разобрался. Встроил qml объект с картой в QWidget.
Может кому пригодится пример:

Наследуемся от QQuickView
Код:
class MapQml(QQuickView):
    def __init__(self):
        super().__init__()
        self.setSource(QUrl('map.qml'))
        map = self.findChild(QObject, 'map')
        map.setProperty('lat', CUR_POINT['lat'])
        map.setProperty('lon', CUR_POINT['lon'])
        map.setProperty('zoom', 14)
Создаем объект MapQml и помещаем его в контейнер QWidget
Код:
        map_qml = MapQml()
        container = QWidget.createWindowContainer(map_qml, self)
       
        box_map = QVBoxLayout()
        box_map.addWidget(container)

И содержимое файла map.qml
Код:
import QtQuick 2.5
import QtLocation 5.6
import QtPositioning 5.6

Rectangle {
    width: parent.width
    height: parent.height
    visible: true

    Plugin {
        id: mapPlugin
        name: "osm"
    }

    Map {
        objectName: "map"
        property real lat: 54.0
        property real lon: 54.0
        property int zoom: 14
        anchors.fill: parent
        plugin: mapPlugin
        center: QtPositioning.coordinate(lat, lon)
        zoomLevel: zoom
    }
}


Название: Re: GUI с картами OSM на PyQt5
Отправлено: Silver Swift от Апрель 04, 2018, 10:11
Понимаю, что поздно, но может быть кому пригодится: https://qgis.org/api/2.18/index.html


Название: Re: GUI с картами OSM на PyQt5
Отправлено: kai666_73 от Апрель 04, 2018, 11:14
Понимаю, что поздно, но может быть кому пригодится: https://qgis.org/api/2.18/index.html

Ну да, вполне годная штука.
Есть возможность исползовать его для написания PyQt5 приложения.
На просторах интернета можно найти колеса для (mini)Conda.

Сам щас его плотно использую.

ЗЫ. В принципе, третий QGIS релизнулся.