Retrieve Location Using Qt Mobility/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Sub-categorize)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Developing with Qt::QtMobility]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
{{LangSwitch}}
[toc align_right=&quot;yes&amp;quot; depth=&quot;4&amp;quot;]
[[Category:Developing with Qt::QtMobility]]
 
[[Category:HowTo]]
'''Български''' [[Retrieve_Location_Using_Qt_Mobility|English]]
[[Category:Snippets::Misc]]
[[Category:Tutorial]]
[[Category:Bulgarian]]


= Намиране на местоположение с Qt Mobility =
= Намиране на местоположение с Qt Mobility =
Line 9: Line 11:
== Общ преглед ==
== Общ преглед ==


Предоставеният програмен код показва как се намира местоположението чрез клас &quot;QGeoPositionInfoSource&amp;quot;:http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html от Qt Mobility. След като бъде установена позицията на екрана се показват нейните координати (географска ширина и дължина). Примерът е тестван на Nokia E7 със Symbian^3
Предоставеният програмен код показва как се намира местоположението чрез клас [http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html QGeoPositionInfoSource] от Qt Mobility. След като бъде установена позицията на екрана се показват нейните координати (географска ширина и дължина). Примерът е тестван на Nokia E7 със Symbian^3


Следните &quot;методи за позициониране&amp;quot;:http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html#PositioningMethod-enum могат да бъдат използвани:<br />* '''SatellitePositioningMethods''' - Сателитни методи за позициониране като GPS.<br />* '''NonSatellitePositioningMethods''' - Други позициониращи методи.<br />* '''AllPositioningMethods'''- Всички позициониращи methods.
Следните [http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html#PositioningMethod-enum методи за позициониране] могат да бъдат използвани:
* '''SatellitePositioningMethods''' - Сателитни методи за позициониране като GPS.
* '''NonSatellitePositioningMethods''' - Други позициониращи методи.
* '''AllPositioningMethods'''- Всички позициониращи methods.


Примерната програма използва '''NonSatellitePositioningMethods'''.
Примерната програма използва '''NonSatellitePositioningMethods'''.
Line 19: Line 24:
=== Проектен файл ===
=== Проектен файл ===


Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена &quot;възможността&amp;quot;:http://developer.qt.nokia.com/wiki/Symbian_Capabilities_Bulgarian '''Location'''.
Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена [http://developer.qt.nokia.com/wiki/Symbian_Capabilities_Bulgarian възможността] '''Location'''.
 
<code>
symbian:TARGET.CAPABILITY ''= NetworkServices Location


<code><br />symbian:TARGET.CAPABILITY ''= NetworkServices Location
CONFIG''= mobility
<br />CONFIG''= mobility<br />MOBILITY += location<br /></code>
MOBILITY += location
</code>


=== Хедър ===
=== Хедър ===


<code><br />#ifndef MAINWINDOW_H<br />#define MAINWINDOW_H
<code>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include &lt;QtGui/QMainWindow&amp;gt;<br />#include &lt;QGeoPositionInfo&amp;gt;<br />#include &lt;QGeoPositionInfoSource&amp;gt;<br />#include &lt;QLabel&amp;gt;
#include <QMainWindow>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>
#include <QLabel>


// QtMobility namespace<br />QTM_USE_NAMESPACE
// QtMobility namespace
QTM_USE_NAMESPACE


namespace Ui {<br /> class MainWindow;<br />}
namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow<br />{<br /> Q_OBJECT<br />public:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:


explicit MainWindow(QWidget '''parent = 0);
explicit MainWindow(QWidget '''parent = 0);
<br /> virtual ~MainWindow();
 
<br />public slots:<br /> /'''*<br /> * Called when the current position is updated.<br /> *<br /> * </code>return nothing<br /> '''/<br /> void positionUpdated(QGeoPositionInfo geoPositionInfo);
virtual ~MainWindow();
<br />private:<br /> /'''*<br /> * Start listening for position changes<br /> *<br /> * <code>return nothing<br /> '''/<br /> void startLocationAPI();
 
<br />private:<br /> QGeoPositionInfoSource''' m_pLocationInfo;
public slots:
/'''*
* Called when the current position is updated.
*
* </code>return nothing
*/
void positionUpdated(QGeoPositionInfo geoPositionInfo);
 
private:
/'''*
* Start listening for position changes
*
* <code>return nothing
*/
void startLocationAPI();
 
private:
QGeoPositionInfoSource''' m_pLocationInfo;


QLabel* m_pLabel;
QLabel* m_pLabel;
Line 46: Line 83:
};
};


#endif // MAINWINDOW_H<br /></code>
#endif // MAINWINDOW_H
</code>


=== Код ===
=== Код ===


<code><br />#include &quot;mainwindow.h&amp;quot;
<code>
#include "mainwindow.h"
 
#include <QGeoCoordinate>
#include <QApplication>
#include <QDesktopWidget>
 
#include <QCoreApplication>
 
#include <QDebug>
 
MainWindow::MainWindow(QWidget '''parent)
: QMainWindow(parent), m_pLocationInfo(NULL), m_pLabel(NULL)
{
m_pLabel = new QLabel("",this);
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
startLocationAPI();
}
 
MainWindow::~MainWindow()
{
 
}
 
void MainWindow::startLocationAPI()
{
// Obtain the location data source if it is not obtained already
if (!m_pLocationInfo)
{
m_pLocationInfo =
QGeoPositionInfoSource::createDefaultSource(this);
 
//Select positioning method
m_pLocationInfo->setPreferredPositioningMethods(QGeoPositionInfoSource::NonSatellitePositioningMethods);
 
// When the position is changed the positionUpdated function is called
connect(m_pLocationInfo, SIGNAL (positionUpdated(QGeoPositionInfo)),
this, SLOT (positionUpdated(QGeoPositionInfo)));


#include &lt;QGeoCoordinate&amp;gt;<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QDesktopWidget&amp;gt;
// Start listening for position updates
m_pLocationInfo->startUpdates();
}
}


#include &lt;QtCore/QCoreApplication&amp;gt;
void MainWindow::positionUpdated(QGeoPositionInfo geoPositionInfo)
{
if (geoPositionInfo.isValid())
{
// Get the current location coordinates
QGeoCoordinate geoCoordinate = geoPositionInfo.coordinate();
qreal latitude = geoCoordinate.latitude();
qreal longitude = geoCoordinate.longitude();


#include &lt;QDebug&amp;gt;
m_pLabel->setText( QString("Latitude: %1 Longitude: %2[http://bugreports.qt.nokia.com/browse/QTMOBILITY-1550?focusedCommentId=151456&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel ).arg(latitude).arg(longitude) );
}
}
</code>


MainWindow::MainWindow(QWidget '''parent)<br /> : QMainWindow(parent), m_pLocationInfo(NULL), m_pLabel(NULL)<br />{<br /> m_pLabel = new QLabel(&quot;&quot;,this);<br /> m_pLabel-&gt;setGeometry(QApplication::desktop()<s>&gt;screenGeometry());<br /> startLocationAPI();<br />}
== Отстраняване на проблеми ==
<br />MainWindow::~MainWindow()<br />{
''' 'QGeoPositionInfo' has not been declared
<br />}
<br />void MainWindow::startLocationAPI()<br />{<br /> // Obtain the location data source if it is not obtained already<br /> if (!m_pLocationInfo)<br /> {<br /> m_pLocationInfo =<br /> QGeoPositionInfoSource::createDefaultSource(this);
<br /> //Select positioning method<br /> m_pLocationInfo</s>&gt;setPreferredPositioningMethods(QGeoPositionInfoSource::NonSatellitePositioningMethods);
<br /> // When the position is changed the positionUpdated function is called<br /> connect(m_pLocationInfo, SIGNAL (positionUpdated(QGeoPositionInfo)),<br /> this, SLOT (positionUpdated(QGeoPositionInfo)));
<br /> // Start listening for position updates<br /> m_pLocationInfo-&gt;startUpdates();<br /> }<br />}
<br />void MainWindow::positionUpdated(QGeoPositionInfo geoPositionInfo)<br />{<br /> if (geoPositionInfo.isValid())<br /> {<br /> // Get the current location coordinates<br /> QGeoCoordinate geoCoordinate = geoPositionInfo.coordinate();<br /> qreal latitude = geoCoordinate.latitude();<br /> qreal longitude = geoCoordinate.longitude();
<br /> m_pLabel-&gt;setText( QString(&quot;Latitude: %1 Longitude: %2&amp;quot;).arg(latitude).arg(longitude) );<br /> }<br />}<br /></code>
<br />h2. Отстраняване на проблеми
<br />''' 'QGeoPositionInfo' has not been declared


Всички нужни хедър файлово трябва да бъдат включени и да бъде оказан namespace Qt Mobility.
Всички нужни хедър файлово трябва да бъдат включени и да бъде оказан namespace Qt Mobility.


<code><br />#include &lt;QGeoPositionInfo&amp;gt;<br />#include &lt;QGeoPositionInfoSource&amp;gt;
<code>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>


// QtMobility namespace<br />QTM_USE_NAMESPACE<br /></code>
// QtMobility namespace
QTM_USE_NAMESPACE
</code>


* AllPositioningMethods не работи според очакванията
* AllPositioningMethods не работи според очакванията


Това е известен критичен бъг, който засяга Qt Mobility 1.1.2&amp;quot;:http://bugreports.qt.nokia.com/browse/QTMOBILITY-1550?focusedCommentId=151456&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel. Моля вижте посочената страница за повече информация.
Това е известен критичен бъг, който засяга Qt Mobility 1.1.2]. Моля вижте посочената страница за повече информация.


== Вижте също ==
== Вижте също ==

Latest revision as of 12:10, 28 November 2016

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Намиране на местоположение с Qt Mobility

Общ преглед

Предоставеният програмен код показва как се намира местоположението чрез клас QGeoPositionInfoSource от Qt Mobility. След като бъде установена позицията на екрана се показват нейните координати (географска ширина и дължина). Примерът е тестван на Nokia E7 със Symbian^3

Следните методи за позициониране могат да бъдат използвани:

  • SatellitePositioningMethods - Сателитни методи за позициониране като GPS.
  • NonSatellitePositioningMethods - Други позициониращи методи.
  • AllPositioningMethods- Всички позициониращи methods.

Примерната програма използва NonSatellitePositioningMethods.

Програмен код

Проектен файл

Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена възможността Location.

symbian:TARGET.CAPABILITY ''= NetworkServices Location

CONFIG''= mobility
MOBILITY += location

Хедър

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>
#include <QLabel>

// QtMobility namespace
QTM_USE_NAMESPACE

namespace Ui {
 class MainWindow;
}

class MainWindow : public QMainWindow
{
 Q_OBJECT
public:

explicit MainWindow(QWidget '''parent = 0);

 virtual ~MainWindow();

public slots:
 /'''*
 * Called when the current position is updated.
 *
 *

return nothing

*/
void positionUpdated(QGeoPositionInfo geoPositionInfo);

private:

/*
* Start listening for position changes
*

*

return nothing
 */
 void startLocationAPI();

private:
 QGeoPositionInfoSource''' m_pLocationInfo;

QLabel* m_pLabel;

};

#endif // MAINWINDOW_H

Код

#include "mainwindow.h"

#include <QGeoCoordinate>
#include <QApplication>
#include <QDesktopWidget>

#include <QCoreApplication>

#include <QDebug>

MainWindow::MainWindow(QWidget '''parent)
 : QMainWindow(parent), m_pLocationInfo(NULL), m_pLabel(NULL)
{
 m_pLabel = new QLabel("",this);
 m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
 startLocationAPI();
}

MainWindow::~MainWindow()
{

}

void MainWindow::startLocationAPI()
{
 // Obtain the location data source if it is not obtained already
 if (!m_pLocationInfo)
 {
 m_pLocationInfo =
 QGeoPositionInfoSource::createDefaultSource(this);

 //Select positioning method
 m_pLocationInfo->setPreferredPositioningMethods(QGeoPositionInfoSource::NonSatellitePositioningMethods);

 // When the position is changed the positionUpdated function is called
 connect(m_pLocationInfo, SIGNAL (positionUpdated(QGeoPositionInfo)),
 this, SLOT (positionUpdated(QGeoPositionInfo)));

 // Start listening for position updates
 m_pLocationInfo->startUpdates();
 }
}

void MainWindow::positionUpdated(QGeoPositionInfo geoPositionInfo)
{
 if (geoPositionInfo.isValid())
 {
 // Get the current location coordinates
 QGeoCoordinate geoCoordinate = geoPositionInfo.coordinate();
 qreal latitude = geoCoordinate.latitude();
 qreal longitude = geoCoordinate.longitude();

 m_pLabel->setText( QString("Latitude: %1 Longitude: %2[http://bugreports.qt.nokia.com/browse/QTMOBILITY-1550?focusedCommentId=151456&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel ).arg(latitude).arg(longitude) );
 }
}

Отстраняване на проблеми

'QGeoPositionInfo' has not been declared

Всички нужни хедър файлово трябва да бъдат включени и да бъде оказан namespace Qt Mobility.

#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>

// QtMobility namespace
QTM_USE_NAMESPACE
  • AllPositioningMethods не работи според очакванията

Това е известен критичен бъг, който засяга Qt Mobility 1.1.2]. Моля вижте посочената страница за повече информация.

Вижте също