# Wiki

##### Actions
(Difference between revisions)

# Calculating the distance between two locations in Symbian Web Runtime

Jump to: navigation, search

This code snippet demonstrates how to calculate the distance between two locations on Symbian Web Runtime using the Location Service API.

Article Metadata

Tested with
Devices(s): Nokia 5800 XpressMusic

Compatibility
Platform(s): S60 5th Edition

Article
Keywords: device.getServiceObject(), Service.Location, Service.Location.GetLocation(), Service.Location.Calculate()
Created: User:Nokia Developer KB (17 Nov 2008)
Last edited: hamishwillee (05 Oct 2012)

## Source: widget.xhtml

`<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>        <link rel="StyleSheet" href="style/general.css" type="text/css" />        <script type="text/javascript" src="script/script.js" />        <title>WRT Application</title>    </head>    <body>        <div id="bodyContent" class="bodyContent">            <input type="button" value="Display distance"                onclick="displayDistance();" />        </div>    </body></html>`

## Source: script.js

`var serviceObj = null;var distanceCriteria = null; window.onload = init; // Initializes the widgetfunction init() {    // Obtain the Location service object    try {        serviceObj = device.getServiceObject("Service.Location", "ILocation");    } catch (ex) {        alert("Service object cannot be found.");        return;    }     // Initialize the criteria for the service object    criteria = new Object();    criteria.LocationInformationClass = "BasicLocationInformation";     distanceCriteria = new Object();    distanceCriteria.MathRequest = "FindDistance";} function displayDistance() {    if (serviceObj == null) {        alert("Service object has not been initialized.");        return;    }     // Obtain the location information (asynchronous)    try {        var result = serviceObj.ILocation.GetLocation(criteria,            locationDataReady);    } catch (ex) {        alert(ex);        return;    }} // Called when the location data has been obtainedfunction locationDataReady(transId, eventCode, result) {    // On error situation, display the error message    if (eventCode == 4) {        alert("Error " + result.ErrorCode + ": " + result.ErrorMessage);        return;    }     // The source location is where the device now is    var srcLocation = new Object();    srcLocation.Latitude = result.ReturnValue.Latitude;    srcLocation.Longitude = result.ReturnValue.Longitude;    srcLocation.Altitude = result.ReturnValue.Altitude;     // The destination location is initialized to specific coordinates    var destLocation = new Object();    destLocation.Latitude = 61.0;    destLocation.Longitude = 24.0;    destLocation.Altitude = 0;     // Calculate the distance between the source and the destination    var distance = calculateDistance(srcLocation, destLocation);    // Display the distance rounded to two decimals    alert(distance.toFixed(2) + " m");} // Calculates the distance from the source location to the destination locationfunction calculateDistance(srcLocation, destLocation) {    var distance = 0.0;    distanceCriteria.DistanceParamSource = srcLocation;    distanceCriteria.DistanceParamDestination = destLocation;    try {        var distResult = serviceObj.ILocation.Calculate(distanceCriteria);        distance = distResult.ReturnValue;    } catch (ex) {        alert(ex);        distance = undefined;    }    return distance;}`

## Postconditions

The distance between two locations is displayed.

## See also

This page was last modified on 5 October 2012, at 08:34.
270 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.