Я решил попрактиковаться в программировании под Android с помощью Qt. В качестве темы я выбрал GPS-трекер.
Набор функций этого трекера:
- провести измерения с GPS-приемника;
- экспортировать трек в GPX ( Формат обмена GPS );
- отображение трека на карте;
- отображение времени в пути, длины пути, средней скорости.
Плагин, параметр плагина и карта
Базовые типы находятся в модуле Qt Location. Qt Location может использовать в качестве бэкэнда следующее:- ЗДЕСЬ ;
- Картбокс ;
- Карта открытых улиц .
Минимальный пример:
Сначала я просто использовал Open Street Map:Plugin { id: plugin preferred: ["here", "osm"] required: Plugin.AnyMappingFeatures | Plugin.AnyGeocodingFeatures } Map { plugin: plugin width: .
height:.
}
Plugin {
id: plugin
name: "osm"
}
Поставщик карт OSM по умолчанию: КартаКвест , которая недавно представила ключ разработчика.
Тут встал вопрос о переходе на что-то другое.
Плагин Open Street Map
В документации перечислена поддержка:- МапКвест;
- ГромЛес ;
- OpenStreetMap и сообщество.
Plugin {
id: mapPlugin
name: "osm"
PluginParameter {
name: "osm.mapping.host";
value: " http://a.tile.openstreetmap.org/ "
}
}
Карта для использования типа карты MapType.CustomMap .
Для любителей магии: Map {
id: map
plugin: mapPlugin
activeMapType: map.supportedMapTypes[7]
}
Чтобы не зависеть от положения элемента в списке поддерживаемые типы карт , вы можете сделать это: Map {
id: map
plugin: mapPlugin
zoomLevel: 16
width: item.width
height:item.height
property MapPolyline track
}
Timer {
interval: 100; running: true; repeat: false
onTriggered: {
for(var i = 0;
i < map.supportedMapTypes.length;
++i){
if(map.supportedMapTypes[i].
style
=== MapType.CustomMap){
map.activeMapType = map.supportedMapTypes[i];
}
}
}
}
Отслеживать
Чтобы нарисовать дорожку, я взял элемент КартаПолилиния , и я создаю его динамически, чтобы очистить карту: function start() {
mapItem.clearMapItems();
mapItem.track = Qt.createQmlObject('import QtLocation 5.6; MapPolyline {}', item);
mapItem.track.line.width = 6;
mapItem.track.line.color = 'red';
mapItem.addMapItem(mapItem.track);
}
function appendCoordinate(position){
mapItem.center = position;
mapItem.track.addCoordinate(position)
}
Map {
id: mapItem
plugin: mapPlugin
zoomLevel: 16
width: item.width
height:item.height
property MapPolyline track
}
При запуске очищаю карту, создаю трек и размещаю его на карте.
При добавлении новой координаты центр карты перемещается в указанное положение и трек удлиняется.
Результат:
Код доступен по адресу GitHub
Теги: #qt5 #qt fast 2 #программирование #Qt
-
Dell Studio Xps 13 Мерло Красный
19 Oct, 24 -
Обзор Sony Vaio Vpcf11Z1E/Bi
19 Oct, 24 -
Url-Адрес, Где
19 Oct, 24 -
Нужна Помощь В Восстановлении Винта.
19 Oct, 24 -
Лучше Или Хуже
19 Oct, 24