Skip to content

Class: cWebGeoLocation

Properties | Events | Methods | Index of Classes

Provides an API for querying the user's current GEO location.

Hierarchy

Library: Web Application Class Library
Package: cWebGeoLocation.pkg

Description

The cWebGeoLocation class provides an API for querying the user's current GEO location. It is a direct wrapper of the HTML5 geolocation API. The location is provided in GPS coordinates along with information about the accuracy, traveling speed, and direction. Note that the web application needs to gain permission before being allowed access to this information. Most browsers require the page to be loaded in a secure context (SSL/HTTPS) and will ask the end user for permission to access the location.

Querying the location is an asynchronous process and can be done once (using QueryLocation) or continuously using the tracking mode. To query the location once, a single call to QueryLocation can be made, and a callback function should be provided that will receive the data.

Sample

The example below shows this process where GeoQuery_Callback is passed into QueryLocation as a callback function.

Object oWebGeoLocation1 is a cWebGeoLocation
End_Object

Object oQueryOnceBtn is a cWebButton
    Set psCaption to "Show location"

    Procedure GeoQuery_Callback Integer iErr Number nLatitude Number nLongitude ;
        Number nAccuracy Number nSpeed Number nHeading

        If (not(iErr)) Begin
            Send ShowInfoBox ;
                (SFormat("Lat: %1 Long: %2 Acc: %3 Speed: %4 Head: %5", nLatitude, nLongitude, nAccuracy, nSpeed, nHeading))
        End
    End_Procedure

    WebPublishProcedure GeoQuery_Callback

    Procedure OnClick
        Send QueryLocation of oWebGeoLocation1 (RefProc(GeoQuery_Callback)) Self
    End_Procedure
End_Object  

The Start and Stop procedures can be used to start and stop the continuous location tracking. The pbTracking web property indicates if tracking is currently enabled or not. If pbAutoStart is True, the tracking will start automatically when the view in which the object is placed is shown or when the application is loaded if placed outside of the view.

Sample

The example below shows how tracking is used to display the location inside a label.

Object oWebGeoLbl is a cWebLabel
    Set piColumnSpan to 0
    Set psCaption to "GeoLocation: ..."
End_Object

Object oWebGeoLocation is a cWebGeoLocation
    Set pbAutoStart to True

    Procedure OnLocationChange Number nLatd Number nLongtd Number nAccuracy Number nSpeed Number nHeading
        Forward Send OnLocationChange nLatitude nLongitude nAccuracy nSpeed nHeading

        WebSet psCaption of oWebGeoLbl to ;
            (SFormat("GeoLocation: Lat: %1 Long: %2 Acc: %3 Speed: %4 Head: %5", nLatd, nLongtd, nAccuracy, nSpeed, nHeading)) 
    End_Procedure
End_Object