Russian Qt Forum
Ноябрь 14, 2018, 10:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: GUI с картами OSM на PyQt5  (Прочитано 1866 раз)
tailer73
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« : Декабрь 13, 2017, 21:46 »

Здравствуйте! Есть задача реализовать в десктопном приложении под Unix вот такие возможности:
1)Отображение карты
2)Вывод на крату точек из БД по координатам

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

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

Offline Offline

Сообщений: 8


Просмотр профиля
« Ответ #1 : Декабрь 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
Записан
tailer73
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #2 : Январь 07, 2018, 23:50 »

Во всех приведенных примерах используется QML.
А мне надо  без него сделать.

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

Сообщений: 556



Просмотр профиля
« Ответ #3 : Март 06, 2018, 19:35 »

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

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #4 : Март 28, 2018, 00:45 »

Дата конечно прошла...Пилили несколько лет назад, только на С++...К сожалению работа с картами осталась только под qml...В версиях 4.х был вроде бы виджет, но убрали. Мы делали через QWebView и javascript, но выяснилось, что если будет много точек, то будут ужасные тормоза...Лучшей вариант это qml компонент разместить на виджете...Пробовали, то при выводе пару сотен тысяч объектов тормозов не наблюдали...К сожалению исходники удалил...

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

Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #5 : Март 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
    }
}
Записан
Silver Swift
Новичок

Offline Offline

Сообщений: 3


Просмотр профиля
« Ответ #6 : Апрель 04, 2018, 10:11 »

Понимаю, что поздно, но может быть кому пригодится: https://qgis.org/api/2.18/index.html
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 316


Просмотр профиля
« Ответ #7 : Апрель 04, 2018, 11:14 »

Понимаю, что поздно, но может быть кому пригодится: https://qgis.org/api/2.18/index.html

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

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

ЗЫ. В принципе, третий QGIS релизнулся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.109 секунд. Запросов: 23.