© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
31 мая 2018 г. 12:13

Подключение карты через плагин OSM. С localhost Qt/QML

QML, Qt, Localhost, OSM, server

Как запустить карту с localhost , используя OSM на Qt/QML.
 
Добрый день)
 
  1. Среда разработки Sailfish SDK(Qt)
  2. Язык C++/QML(Qt/QML)
  3. Работа с картами OSM
  4. Подключен GeoServer в котором находятся карты
Цель: Написать программу которая должна отображать карту на мобильном устройстве с использование плагина(MapPlugin). Карта должна загружаться с локального хоста(localhost:8080).
 
Подключил карту OSM, все работает.
 
import QtQuick 2.0
import Sailfish.Silica 1.0
import QtPositioning 5.3
import QtLocation 5.0
import QtQuick 2.0
import QtWebKit 3.0

Page
{
    id: pageMap
    Plugin
    {
        id: mapPlugin
        name: "osm"
        PluginParameter
        {
            name: "osm";
        }
    }
    Map {
        id: map
        plugin: mapPlugin
        zoomLevel: 16
        width: pageMap.width
        height: pageMap.height
    }
}
 
Теперь мне нужно запустить свою карту которая находится на моем локальном сервере(Localhost:8080 GeoServer). В документации Qt "OSM" прочитал что можно подключить URL используя osm.mapping.custom.host . Источник: https://doc-snapshots.qt.io/qt5-dev/location-plugin-osm.html
 
К сожалению в интернете нигде не нашел инструкцию как правильно подключать плитку карты с локального сервера(localhost).  Так же не нашел примера. Может быть не заметил. Пришлось писать самому.
Дело в том что когда я запускаю программу на телефоне. Открывается карта OSM, а не моя карта на Localhot'e geoserver'а.
 
import QtQuick 2.0
import Sailfish.Silica 1.0
import QtPositioning 5.3
import QtLocation 5.0
import QtQuick 2.0
import QtWebKit 3.0

Page
{
    id: pageMap
    Plugin {
        id: mapPlugin
        name: "osm"
        PluginParameter {
            name: "osm";
            //В value URL на мою карту в geoservere
            value: "http://192.168.1.252:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=spearfish&styles=&bbox=589425.9342365642,4913959.224611808,609518.6719560538,4928082.949945881&width=768&height=539&srs=EPSG:26713&format=application/openlayers"
        }
    }
    Map {
        id: map
        plugin: mapPlugin
        zoomLevel: 16
        width: pageMap.width
        height: pageMap.height
    }
}

Добрый день.


Сам не разбирался с этим, так что тоже полез в документацию.
Может PluginParameter стоит переписать немного иначе

PluginParameter {
            name: "osm.mapping.custom.host";
            //В value URL на мою карту в geoservere
            value: "http://192.168.1.252:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=spearfish&styles=&bbox=589425.9342365642,4913959.224611808,609518.6719560538,4928082.949945881&width=768&height=539&srs=EPSG:26713&format=application/openlayers"
        }

Спасибо что откликнулись.

Исправил, но все равно открывается карта Open Street Map. Никаких сообщений об ошибок при этом не выводит.

import QtQuick 2.0
import Sailfish.Silica 1.0
import QtPositioning 5.3
import QtLocation 5.0
import QtQuick 2.0
import QtWebKit 3.0

Page
{
    id: pageMap
    Plugin {
        id: mapPlugin
        name: "osm"
        PluginParameter {
            name: "osm.mapping.custom.host";
            value: "http://192.168.1.252:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=spearfish&styles=&bbox=589425.9342365642,4913959.224611808,609518.6719560538,4928082.949945881&width=768&height=539&srs=EPSG:26713&format=application/openlayers"
        }
    }
    Map {
        id: map
        width: 800
        height: 1350
        plugin: mapPlugin
        zoomLevel: 16
    }
}

  • #
  • отредактировано4 июня 2018 г. 6:42
  • 4 июня 2018 г. 6:40

Хотя нет, вывел ошибку такого рода

[W] unknown:0 - tile request error "Problem with tile image"

Интересно, больше походит на то, что карта неправильно забирается. То есть проблема с тайлами самой карты.
Если учесть, что используете модуль Qt location, то может быть и баг в самом Qt, в багтрекере один такой висит на старых версиях, может заново проявился.

Также может быть неправильная настройка вашего сервера. Ведь как я понимаю, вы подняли сервер у себя дома для этого.
Пройдитесь ещё раз по настройкам и если есть возможность проверить ваш сервер сторонним софтом, то используйте эту возможность, чтобы убедиться что конкретно ваш сервер работает стабильно, тогда останется до конца искать ошибку в Qt и вашем проекте на Qt.
  • #
  • отредактировано6 августа 2018 г. 15:25
  • 6 августа 2018 г. 15:24

Qt/QML умеет только OSM, дописывая в конце урла /0/0/0.png. Geoserver - умеет wm(t)s/tms, но у них в адресе сами знаете что. Можно самому нарезать карту на тайлы, и тогда - ок, а вот динамические - увы. А так, да - "проблема с тайлами самой карты"

  • Alex
  • #
  • 19 августа 2018 г. 12:38
наткнулся на возможное решение, конкретно для geoserver'a

http://localhost/gwc/tms/1.0.0/gis:service@EPSG%3A900913@png/{z}/{x}/{-y}.png

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
20 августа 2018 г. 9:14
nayk1982

C++ - Тест 001. Первая программа и типы данных

  • Результат 86баллов,
  • Очки рейтинга6
20 августа 2018 г. 9:07
nayk1982

Qt - Тест 001. Сигналы и слоты

  • Результат 84баллов,
  • Очки рейтинга4
19 августа 2018 г. 10:43
Виктор Попов

Qt - Тест 001. Сигналы и слоты

  • Результат 78баллов,
  • Очки рейтинга2
Последние комментарии
20 августа 2018 г. 17:02
Евгений Ереметько

Qt/C++ - Урок 027. Полиморфизм в Qt на примере геометрических фигур в QGraphicsScene

Добрый день, начал только изучать Qt C++. Никак не могу понять, как удалять последний созданный элемент. Заранее спасибо.
17 августа 2018 г. 15:47
Евгений_Канусовский@1981

PyQt5 - Урок 003. QSystemTrayIcon - Как свернуть приложение в трей

Решение проблемы нашел в интернете)) Лечится так:File - Settings - Project:{name_my_project} - Project Interpreter - устанавливаем нужную нам версию интерпретатора(python 3.6.2 например) -...
16 августа 2018 г. 17:20
Евгений_Канусовский@1981

PyQt5 - Урок 003. QSystemTrayIcon - Как свернуть приложение в трей

Добрый вечер Евгений и форумчане! Не подскажите почему в при запуске данного кода в PyCharm выдаётся сообщение: "ModuleNotFoundError: No module named 'PyQt5'"?
10 августа 2018 г. 13:40
Alex

Работа с триггерными функциями в PostgreSQL

Приветствую! Если вы создаете новую таблицу, почему бы просто не сделать вьюху ? Просто от одного названия "триггер" как-то не хочется его использовать, а уж кода сколько писа...
Сейчас обсуждают на форуме
20 августа 2018 г. 13:18
LittleTux

Странное поведение сингелтона, а может быть, и не в нем проблема...

Лучше возвращать ссылку на экземпляр класса:PaletteUtils& PaletteUtils::instance(){ static PaletteUtils _instance; return _instance;}и если уж делать singleton, то хорошо было ...
20 августа 2018 г. 6:45
LittleTux

Как правильно сбросить позицию touchscreen в 0, как это делается с курсором QCursor::setPos(0,0)?

Ранее не сталкивался с разработкой под устройства с touchscreen, но вот наступило такое время... и возникла проблема: есть у нас mainWidget, на нем лежит stackwidget, в котором есть пару видже...
19 августа 2018 г. 12:38
Alex

Подключение карты через плагин OSM. С localhost Qt/QML

наткнулся на возможное решение, конкретно для geoserver'a http://localhost/gwc/tms/1.0.0/gis:service@EPSG%3A900913@png/{z}/{x}/{-y}.png
17 августа 2018 г. 20:35
Чарльз Грин

Как вывести видео на 2 QVideoWidget?

Есть прога, в ней qvideowidget предпросмотр, а нужно, чтоб с этого же плеера видео выводилось и на второй монитор одновременно и управлялось одними эл. управления. Подскажите пожалуйста как эт...
17 августа 2018 г. 8:52
nayk1982

Помогите разобраться с версиями библиотек, компиляторов короче запутался с этим Qt

https://www.qt.io/download-qt-installer   - Качайте Online инсталлятор под нужную ОС и устанавливайте через него нужные версии библиотек.

Рекомендуемые страницы