loopback-datatype-geopoint
Overview
The Geopoint object is a LoopBack data type that represents a physical location.
loopback-datasource-juggler and strong-remoting modules use this object to facilitate use of GeoPoint
data type in a LoopBack model properties & remote methods.
Create a new GeoPoint object:
For example, to create a GeoPoint object in LoopBack:
var loopback = require(‘loopback’);
var here = new loopback.GeoPoint({lat: 10.32424, lng: 5.84978});
The constructor requires two values:
lat
: Latitude point in degrees. Range: -90 to 90.lng
: Longitude point in degrees. Range: -180 to 180
Call the constructor with any of the following arguments:
- Two numbers, for example
new GeoPoint(10.32, 5.84)
- Number string of form “lat, lng”, for example
new GeoPoint('10.32, 5.84')
- Array with two number elements:
[lat, lng]
, for examplenew GeoPoint([10.32, 5.84])
- Object with two number properties:
lat
andlng
, for examplenew GeoPoint({ lat: 10.32, lng: 5.84})
Using GeoPoint type
- in a LoopBack Model:
Declare a GeoPoint property in the model JSON file, for example:
...
"properties": {
"location": {
"type": "GeoPoint"
},
...
}
...
or programtically:
var CoffeeShop = loopback.createModel('coffee-shop', {
location: 'GeoPoint'
});
-
in remote methods:
‘accepts’ & ‘returns’ argument types, for remote method, can be set to
GeoPoint
type, for example, in a remote methodgetNearbyLocation
for modelMyModel
:common/models/my-model.js
MyModel.remoteMethod('getNearbyLocation', { accepts: {arg: 'loc', type: 'GeoPoint'}, returns: {arg: 'location', type: 'GeoPoint'} });
Static Method:
-
distanceBetween(pointA, pointB, options)
:Determine the spherical distance between two GeoPoints
Arguments:
Name Type Description pointA GeoPoint Point A pointB GeoPoint Point B options Object Options object with one key, ‘type’. See below. Options:
Name Type Description type String Unit of measurement, one of:
miles (default)
radians
kilometers
meters
miles
feet
degrees
Instance Methods:
-
geoPoint.distanceTo(point, options)
:Determine the spherical distance to the given point.
For example:
var loopback = require(‘loopback’); var here = new loopback.GeoPoint({lat: 10, lng: 10}); var there = new loopback.GeoPoint({lat: 5, lng: 5}); console.log(here.distanceTo(there, {type: 'miles'})); // result: 438
Arguments:
Name Type Description point GeoPoint GeoPoint object to which to measure distance. options Object Options object with one key, ‘type’. Same as options
indistanceBetween()
-
geoPoint.toString()
: Simple serialization ofgeoPoint
.