mobile-locator
v0.6.3
Published
Locate geolocation information based on Cell base station data
Downloads
228
Maintainers
Readme
Mobile Locator
Get geolocation from cell tower information.
Currently, the following APIs are implemented:
cellocation
: Cellocation.com API (China)gpsspg
: GPSspg.com API (China)google
: Google Geolocation APIhaoservice
: HaoService.com API (China)mozilla
: Mozilla Geolocation APImylnikov
: Mylnikov Geolocation APIopencellid
: OpenCellID APIunwiredlabs
: UnwiredLabs Location APIyandex
: Yandex Geolocation API (Russian)
Library
api(name, options)
Create the location engine by given name and options.
Name | Options
--- | ---
cellocation
| system
(optional): Coordinate system: wgs84
(Default), gcj02
, bd09
.
google
| key
: Google API key
gpsspg
| key
: GPSspg API key, oid
: GPSspg OID, system
(optional): Coordinate system: 0
:wgs84_(Default); 1
:gcj02; 2
:bd09; 3
:QQ Maps; 4
:MapBar
haoservice
| key
: HaoService API key, system
(optional): Coordinate system: 0
: gcj02; 1
:bd09; 2
:wgs84(Default)_
mozilla
| key
: Mozilla API key
mylnikov
| data
(optional): open
: Use open source data.
opencellid
| key
: OpenCellID API key
unwiredlabs
| token
: UnwiredLabs Location API token
yandex
| key
: Yandex API key
Besides the above engine-specific options, more general options are also available:
verbose
: Print more debug information ifverbose
istrue
;timeout
: Set the timeout value in milliseconds. There is no timeout by default.
The returned value is a locate()
function, which will be described in the next section.
locate(info)
info
should contain cell information, including mnc
, mcc
, lac
and cid
.
The function will return a promise, which will return the location
from given geolocation service.
location
is an object contains following properties:
Property | Description
--- | ---
longitude
| Longitude
latitude
| Latitude
accuracy
| The accuracy range of the given position
address
(optional) | For some API, this property contains the human readable address line.
Example
const api = require('mobile-locator');
const locate = api('google', { key: YOUR_GOOGLE_API_KEY });
locate({ mcc: 460, mnc: 0, lac: 4219, cid: 20925 })
.then(location => console.log(JSON.stringify(location, null, 2)));
The output would be:
{
longitude: 116.46679499999998,
latitude: 39.9910226,
accuracy: 606
}
Command-line Interface
Usage
$ mobile-locator -h
Usage: mobile-locator [options]
Locate geolocation information based on Cell base station data
Options:
-h, --help output usage information
-V, --version output the version number
-c, --cell <cell> Cell tower base station information in format "MCC,MNC,LAC,CID". "-c 460,0,4219,20925"
-e, --engine <engine> Geolocation service engine. {cellocation, google, gpsspg, haoservice, mozilla, mylnikov, opencellid, unwiredlabs, yandex}. Default: google
-a, --arguments <arguments> Arguments for geolocation engine. e.g. "key:XXX,oid:123".
-m, --map <map> Map service. {google, bing, openstreetmap, google.cn, bing.cn, baidu}.
-v, --verbose Verbose output.
Examples:
$ mobile-locator -a "key:XXX" -c 460,0,4219,20925
$ mobile-locator -e cellocation -a "system:bd09" -m baidu -c 460,0,4219,20925
By default, the Google Geolocation engine will be used.
$ mobile-locator -a "key:GOOGLE_API_KEY" -c 460,0,4219,20925
{"longitude":116.46679499999998,"latitude":39.9910226,"accuracy":606}
With verbose option:
$ mobile-locator -a "key:AIzaSyAL2sfTLqUv9Rb3ercbtuu__PG2pS_4eDo" -c 460,0,4219,20925 -v
Geolocation engine: "google"
Cell: {"mcc":"460","mnc":"0","lac":"4219","cid":"20925"}
Location: {"longitude":116.46679499999998,"latitude":39.9910226,"accuracy":606}
More complex example:
- Use
cellocation
engine; - Choose
bd09
coordinate system; - Show Baidu map url for given coordinate;
- Verbose output.
$ mobile-locator -e cellocation -a 'system:bd09' -m baidu -v -c 460,0,4219,20925
Geolocation engine: "cellocation"
Cell: {"mcc":"460","mnc":"0","lac":"4219","cid":"20925"}
Location: {"longitude":"116.479653","latitude":"39.997967","accuracy":"100","address":"北京市朝阳区望京街道望京园402号楼;广顺南大街与阜安西路路口东北109米"}
Map url: http://api.map.baidu.com/marker?location=39.997967,116.479653&title=_&content=北京市朝阳区望京街道望京园402号楼;广顺南大街与阜安西路路口东北109米&output=html&autoOpen=true