MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Обсуждение: Подключение карты через плагин OSM
08.08.2018
16:28
Текстовые метки: QML, Qt, Localhost, OSM, server
Раздел: Компьютер - Программирование - Язык C++ - Библиотека Qt - Картография в Qt и QML

Как запустить карту с 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 стоит переписать немного иначе (свойство name):


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

}

}



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

Также может быть неправильная настройка вашего сервера. Ведь как я понимаю, вы подняли сервер у себя дома для этого.

Пройдитесь ещё раз по настройкам и если есть возможность проверить ваш сервер сторонним софтом, то используйте эту возможность, чтобы убедиться что конкретно ваш сервер работает стабильно, тогда останется до конца искать ошибку в Qt и вашем проекте на Qt.


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


 
MyTetra Share v.0.52
Яндекс индекс цитирования