Retrieve Location Using Qt Mobility/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
'''Български''' [[Retrieve Location Using Qt Mobility|English]]
[[Category:Developing with Qt::QtMobility]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]]


=Намиране на местоположение с Qt Mobility=
[toc align_right=&quot;yes&amp;quot; depth=&quot;4&amp;quot;]


==Общ преглед==
'''Български''' [[Retrieve_Location_Using_Qt_Mobility|English]]


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


Следните [http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html#PositioningMethod-enum методи за позициониране] ''[doc.qt.nokia.com]'' могат да бъдат използвани:
== Общ преглед ==


* '''SatellitePositioningMethods''' Сателитни методи за позициониране като <span class="caps">GPS</span>.
Предоставеният програмен код показва как се намира местоположението чрез клас &quot;QGeoPositionInfoSource&amp;quot;:http://doc.qt.nokia.com/qtmobility-1.1.0-beta/qgeopositioninfosource.html от Qt Mobility. След като бъде установена позицията на екрана се показват нейните координати (географска ширина и дължина). Примерът е тестван на Nokia E7 със Symbian^3
* '''NonSatellitePositioningMethods''' Други позициониращи методи.
 
* '''AllPositioningMethods'''- Всички позициониращи methods.
Следните &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.


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


==Програмен код==
== Програмен код ==
 
=== Проектен файл ===
 
Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена &quot;възможността&amp;quot;:http://developer.qt.nokia.com/wiki/Symbian_Capabilities_Bulgarian '''Location'''.
 
<code><br />symbian:TARGET.CAPABILITY ''= NetworkServices Location
<br />CONFIG''= mobility<br />MOBILITY += location<br /></code>
 
=== Хедър ===
 
<code><br />#ifndef MAINWINDOW_H<br />#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;
 
// QtMobility namespace<br />QTM_USE_NAMESPACE
 
namespace Ui {<br /> class MainWindow;<br />}
 
class MainWindow : public QMainWindow<br />{<br /> Q_OBJECT<br />public:
 
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);
<br />private:<br /> /'''*<br /> * Start listening for position changes<br /> *<br /> * <code>return nothing<br /> '''/<br /> void startLocationAPI();
<br />private:<br /> QGeoPositionInfoSource''' m_pLocationInfo;
 
QLabel* m_pLabel;


===Проектен файл===
};


Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена [http://developer.qt.nokia.com/wiki/Symbian_Capabilities_Bulgarian възможността] ''[developer.qt.nokia.com]'' '''Location'''.
#endif // MAINWINDOW_H<br /></code>


===Хедър===
=== Код ===


===Код===
<code><br />#include &quot;mainwindow.h&amp;quot;


==Отстраняване на проблеми==
#include &lt;QGeoCoordinate&amp;gt;<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QDesktopWidget&amp;gt;


* ‘QGeoPositionInfo’ has not been declared
#include &lt;QtCore/QCoreApplication&amp;gt;


Всички нужни хедър файлово трябва да бъдат включени и да бъде оказан namespace Qt Mobility.
#include &lt;QDebug&amp;gt;


* AllPositioningMethods не работи според очакванията
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 />{
<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


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


==Вижте също==
<code><br />#include &lt;QGeoPositionInfo&amp;gt;<br />#include &lt;QGeoPositionInfoSource&amp;gt;


[http://www.developer.nokia.com/Community/Wiki/index.php/Getting_the_location_in_Qt Getting the location in Qt] ''[developer.nokia.com]''
// QtMobility namespace<br />QTM_USE_NAMESPACE<br /></code>


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


* [[:Category:Developing with Qt|Developing_with_Qt]]
Това е известен критичен бъг, който засяга 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. Моля вижте посочената страница за повече информация.
** [[:Category:Developing with Qt::QtMobility|QtMobility]]
* [[:Category:Developing with Qt::Qt Quick::Tutorial|Tutorial]]


* [[:Category:HowTo|HowTo]]
== Вижте също ==
* [[:Category:snippets|snippets]]

Revision as of 06:40, 24 February 2015




[toc align_right="yes&quot; depth="4&quot;]

Български English

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

Общ преглед

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

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

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

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

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

Qt Mobility трябва да бъде включено в проектовия файл (.pro). Освен това, ако програмата е за устройства със Symbian трябва да бъде добавена "възможността&quot;:http://developer.qt.nokia.com/wiki/Symbian_Capabilities_Bulgarian Location.

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

Хедър

<br />#ifndef MAINWINDOW_H<br />#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;

// QtMobility namespace<br />QTM_USE_NAMESPACE

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

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

explicit MainWindow(QWidget '''parent = 0);
<br /> virtual ~MainWindow();
<br />public slots:<br /> /'''*<br /> * Called when the current position is updated.<br /> *<br /> *

return nothing
/
void positionUpdated(QGeoPositionInfo geoPositionInfo);

private:
/*
* Start listening for position changes
*
*

return nothing<br /> '''/<br /> void startLocationAPI();
<br />private:<br /> QGeoPositionInfoSource''' m_pLocationInfo;

QLabel* m_pLabel;

};

#endif // MAINWINDOW_H<br />

Код

<br />#include &quot;mainwindow.h&amp;quot;

#include &lt;QGeoCoordinate&amp;gt;<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QDesktopWidget&amp;gt;

#include &lt;QtCore/QCoreApplication&amp;gt;

#include &lt;QDebug&amp;gt;

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 />{
<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 />


h2. Отстраняване на проблеми
'QGeoPositionInfo' has not been declared

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

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

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

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

Вижте също