Namespaces
Variants
Actions
Revision as of 16:58, 4 June 2012 by galazzo (Talk | contribs)

QReverseGeocode component for quick reverse geocoding in QML

Jump to: navigation, search
Article Metadata

Code Example
Source file: QReverseGeocode Nokia Project

Tested with
Devices(s): Nokia N8, Nokia C7-00

Platform Security
Capabilities: NetworkServices

Article
Keywords: Reverse Geocode
Created: galazzo (04 Jun 2012)
Last edited: galazzo (04 Jun 2012)
See Also

Contents

Introduction

Reverse geocoding is the process of back (reverse) coding of a point location (latitude, longitude) to a readable address or place name. This permits the identification of nearby street addresses, places, and/or areal subdivisions such as neighbourhoods, county, state, or country. Combined with geocoding and routing services, reverse geocoding is a critical component of mobile location-based services.
Nokia provides one of the best location based services available and reverse geocoding is well supported in Qt/C++ and HTML5, but is not so fast to access to this service from QML.
QReverseGeocode provide a quick and easy solution to manage reverse geocoding from QML.

Installation

  1. Download source code from here
  2. Include QReverseGeocode directory into your project

.pro

include(./qreversegeocode/reversegeocode.pri)

main.cpp

#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
 
#include <QtDeclarative>
#include "qreversegeocode.h"
 
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
 
qmlRegisterType<QReverseGeocode>("QReverseGeocode", 1, 0, "QReverseGeocode");
 
QmlApplicationViewer viewer;
viewer.setMainQmlFile(QLatin1String("qml/QReverseGeocodeSample/main.qml"));
viewer.showExpanded();
 
return app->exec();
}

QML

Note.png
Note: QReverseGeocode have to be used in conjunction with PositionSource component as shown below
import QtQuick 1.1
import com.nokia.symbian 1.1
import QtWebKit 1.0
import QtMobility.location 1.2
import QReverseGeocode 1.0
 
Page {
id: mainPage
 
Text {
id: place
text: ""
}
 
PositionSource {
id: positionSource
active: true
 
onPositionChanged: {
reverseGeocoder.latitude = positionSource.position.coordinate.latitude
reverseGeocoder.longitude = positionSource.position.coordinate.longitude
reverseGeocoder.start();
}
}
 
QReverseGeocode {
id:reverseGeocoder
onReverseGeocodeFinished:{
place.text=reverseGeocoder.postCode+" "+reverseGeocoder.city
}
}
 
}

API Reference

Properties ( To use before calling process() )

  • latitude - Property that hold the latitude value
  • longitude - Property that hold the longitude value

Properties ( Filled when onReverseGeocodeFinished() is emitted )

  • city - Property that hold the city value
  • postCode - Property that hold post code value
  • street - Property that hold the street value
  • country - Property that hold the country value

Signals (handlers)

  • onLatitudeChanged() - Invoked when latitude property changes.
  • onLongitudeChanged() - Invoked when the longitude changes.
  • onReverseGeocodeFinished() - Invoked when the reverse geocode process is finished.

Slots

  • process() - Start the reverse geocoding process. Before calling this method the latitude and longitude properties have to be filled.

onReverseGeocodeFinished

When onReverseGeocodeFinished() is emitted all address informations are stored into the properties described before, so you can compose your informations in the way you need. For example you could need to display just post code and city:

onReverseGeocodeFinished:{
place.text=reverseGeocoder.postCode+" "+reverseGeocoder.city
}

or just city and country:

onReverseGeocodeFinished:{
place.text=reverseGeocoder.city+" "+reverseGeocoder.country
}

rather than all informations:

onReverseGeocodeFinished:{
place.text=reverseGeocoder.street+"<br/>"+reverseGeocoder.postCode+" "+reverseGeocoder.city+"<br/>"+reverseGeocoder.country
}
186 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved