51Degrees Geo-Location Node.js  4.1Newer Version 4.3

51Degrees Geo-Location for Node.js


Getting started example of using the 51Degrees geo-location Cloud to determine the country for a given longitude and latitude.This example is available in full on GitHub.

To run this example, you will need to create a resource key. The resource key is used as short-hand to store the particular set of properties you are interested in as well as any associated license keys that entitle you to increased request limits and/or paid-for properties.

You can create a resource key using the 51Degrees Configurator.

Firstly require the fiftyone.geolocation modules which contain all of the pipeline specific classes we will be using in this example.

const FiftyOneDegreesGeoLocation = require('fiftyone.geolocation')

Build the geo-location pipeline using the builder that comes with the fiftyone.geolocation module and pass in the desired settings. Additional flowElements / engines can be added before the build() method is called if needed.

let pipeline = new FiftyOneDegreesGeoLocation.geoLocationPipelineBuilder({
'resourceKey': localResourceKey

Each pipeline has an event emitter attached you can listen to to catch messages. Valid log types are info, debug, warn and error.

pipeline.on('error', console.error);

A pipeline can create a flowData element which is where evidence is added (for example from a device web request). This evidence is then processed by the pipeline through the flowData's process() method (which returns a promise to work with both syncronous and asyncronous pipelines).

Here is an example of a function that gets the country from a longitude and latidude. In some cases the country value is not meaningful so instead of returning a default, a .hasValue() check can be made. Please see the failureToMatch example for more information.

let getCountry = async function (latitude, longitude) {
// Create a flow data element and process the latitude and longitude.
let flowData = pipeline.createFlowData();
// Add the longitude and latitude as evidence
flowData.evidence.add('location.latitude', latitude);
flowData.evidence.add('location.longitude', longitude);
await flowData.process();
let country = flowData.location.country;
if (country.hasValue) {
console.log(`Country: ${country.value}`);
} else {
// Echo out why the value isn't meaningful