Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

使用Qt Mobility Map and Navigation API显示地图

From Wiki
Jump to: navigation, search
Article Metadata

代码示例
测试基于
设备:: Nokia 5800 and N8.

兼容于
平台: S60 3rd Edition, FP1, FP2
S60 5th Edition Symbian^3
Symbian

文章
关键词: QGraphicsGeoMap
flycarl 在 18 Nov 2010 创建
最后由 hamishwillee 在 24 Apr 2013 编辑


Contents

简介

这里的代码演示如何使用Qt Mobility的地图导航API调用 Nokia Ovi 地图的在线地图插件 来显示地图,这个例子是Qt Mobility中 Map Viewer 例子的精简版,只是显示一定区域一定大小的地图,以方便大家熟悉 QGraphicsGeoMap 的使用。 同时结合Location API获取实时的位置并显示地图。


准备条件

编辑pro文件

由于我们使用的Ovi地图的在线版本所以需要加入网络支持 (network),Mobility bear 和location需要的能力参见Qt Mobility API 需要的能力

QT       += core gui network
 
CONFIG += mobility
MOBILITY = location bearer
 
symbian {
TARGET.CAPABILITY += Location \
NetworkServices \
ReadUserData \
WriteUserData \
ReadDeviceData \
WriteDeviceData
}

代码

类QGraphicsGeoMap是显示地图和与地图交互的主要的类。这个类设计为使用 Graphics View 框架。 这里我们也用QGraphicsView来存放地图显示。

QGraphicsView* m_qgv;
QGraphicsScene* scene = new QGraphicsScene(this);
m_qgv = new QGraphicsView(scene, this);
this->setCentralWidget(m_qgv);

设置网络连接并不把Map and Navigation相关的初始化放在 连接打开后来做

m_session = new QNetworkSession(cfg, this);
connect(m_session, SIGNAL(opened()), this, SLOT(networkSessionOpened()));

在networkSessionOpened()中继续初始化测操作。

void MainWindow::networkSessionOpened()
{
//设置QGeoServiceProvider,设置为Mobiliy自带的Ovi地图插件
setProvider("nokia");
 
//设置QGraphicsGeoMap的界面
setupUi();
}

类QGeoMappingManager 提供QGraphicsGeoMap需要的绝大多数方法, QGeoMappingManager 由QGeoServiceProvider提供,这里我们使用Qt Mobility自带的Ovi在线地图插件,因此最终显示在QGraphicsGeoMap中的地图,都是来自Ovi在线地图插件。插件的关键字'nokia'。

void MainWindow::setProvider(QString providerId)
{
m_serviceProvider = new QGeoServiceProvider(providerId);
m_mapManager = m_serviceProvider->mappingManager();
}

有了QGeoMappingManager ,可以开始设置QGraphicsGeoMap

void MainWindow::setupUi()
{
//通过QGeoMappingManager 初始化
m_mapWidget = new QGraphicsGeoMap(m_mapManager);
 
//放到m_qgv中来显示
m_qgv->scene()->addItem(m_mapWidget);
 
//设置图像中心的地理坐标
m_mapWidget->setCenter(m_currentCoordinate);
 
//设置缩放比例
m_mapWidget->setZoomLevel(15);
 
//设置地图种类,街道图,卫星图等等
m_mapWidget->setMapType(QGraphicsGeoMap::SatelliteMapDay);
}

好这样地图就能显示出来了。



下载Demo

File:MapEmbeded.zip

参考链接

Location API 文档 Qt Mobility 开发 Qt 开发

This page was last modified on 24 April 2013, at 05:19.
1065 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×