mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-22 22:59:35 +02:00
nearby: lat & lon -> location object
This commit is contained in:
parent
c4f67e15d3
commit
508ff9fc72
5 changed files with 31 additions and 11 deletions
|
@ -1,8 +1,8 @@
|
|||
# `nearby(latitude, longitude, [opt])`
|
||||
# `nearby(location, [opt])`
|
||||
|
||||
This method can be used to find stations close to a location. Note that it is not supported by every profile/endpoint.
|
||||
|
||||
`latitude` and `longitude` must be GPS coordinates like `52.5137344` and `13.4744798`.
|
||||
`location` must be an [*FPTF* `location` object](https://github.com/public-transport/friendly-public-transport-format/blob/1.0.1/spec/readme.md#location-objects).
|
||||
|
||||
With `opt`, you can override the default options, which look like this:
|
||||
|
||||
|
@ -24,7 +24,11 @@ const vbbProfile = require('hafas-client/p/vbb')
|
|||
|
||||
const client = createClient(vbbProfile)
|
||||
|
||||
client.nearby(52.5137344, 13.4744798, {distance: 400})
|
||||
client.nearby({
|
||||
type: 'location',
|
||||
latitude: 52.5137344,
|
||||
longitude: 13.4744798
|
||||
}, {distance: 400})
|
||||
.then(console.log)
|
||||
.catch(console.error)
|
||||
```
|
||||
|
|
18
index.js
18
index.js
|
@ -137,9 +137,17 @@ const createClient = (profile) => {
|
|||
})
|
||||
}
|
||||
|
||||
const nearby = (latitude, longitude, opt = {}) => {
|
||||
if ('number' !== typeof latitude) throw new Error('latitude must be a number.')
|
||||
if ('number' !== typeof longitude) throw new Error('longitude must be a number.')
|
||||
const nearby = (location, opt = {}) => {
|
||||
if ('object' !== typeof location || Array.isArray(location)) {
|
||||
throw new Error('location must be an object.')
|
||||
} else if (location.type !== 'location') {
|
||||
throw new Error('invalid location object.')
|
||||
} else if ('number' !== typeof location.latitude) {
|
||||
throw new Error('location.latitude must be a number.')
|
||||
} else if ('number' !== typeof location.longitude) {
|
||||
throw new Error('location.longitude must be a number.')
|
||||
}
|
||||
|
||||
opt = Object.assign({
|
||||
results: 8, // maximum number of results
|
||||
distance: null, // maximum walking distance in meters
|
||||
|
@ -153,8 +161,8 @@ const createClient = (profile) => {
|
|||
req: {
|
||||
ring: {
|
||||
cCrd: {
|
||||
x: profile.formatCoord(longitude),
|
||||
y: profile.formatCoord(latitude)
|
||||
x: profile.formatCoord(location.longitude),
|
||||
y: profile.formatCoord(location.latitude)
|
||||
},
|
||||
maxDist: opt.distance || -1,
|
||||
minDist: 0
|
||||
|
|
|
@ -31,7 +31,7 @@ npm install hafas-client
|
|||
- [`journeyLeg(ref, name, [opt])`](docs/journey-leg.md) – get details for a leg of a journey
|
||||
- [`departures(station, [opt])`](docs/departures.md) – query the next departures at a station
|
||||
- [`locations(query, [opt])`](docs/locations.md) – find stations, POIs and addresses
|
||||
- [`nearby(latitude, longitude, [opt])`](docs/nearby.md) – show stations & POIs around
|
||||
- [`nearby(location, [opt])`](docs/nearby.md) – show stations & POIs around
|
||||
- [`radar(query, [opt])`](docs/radar.md) – find all vehicles currently in a certain area
|
||||
|
||||
|
||||
|
|
|
@ -243,7 +243,11 @@ test('departures with station object', co.wrap(function* (t) {
|
|||
}))
|
||||
|
||||
test('nearby Berlin Jungfernheide', co.wrap(function* (t) {
|
||||
const nearby = yield client.nearby(52.530273, 13.299433, {
|
||||
const nearby = yield client.nearby({
|
||||
type: 'location',
|
||||
latitude: 52.530273,
|
||||
longitude: 13.299433
|
||||
}, {
|
||||
results: 2, distance: 400
|
||||
})
|
||||
|
||||
|
|
|
@ -288,7 +288,11 @@ test('departures at 7-digit station', co.wrap(function* (t) {
|
|||
|
||||
test('nearby', co.wrap(function* (t) {
|
||||
// Berliner Str./Bundesallee
|
||||
const nearby = yield client.nearby(52.4873452, 13.3310411, {distance: 200})
|
||||
const nearby = yield client.nearby({
|
||||
type: 'location',
|
||||
latitude: 52.4873452,
|
||||
longitude: 13.3310411
|
||||
}, {distance: 200})
|
||||
|
||||
t.ok(Array.isArray(nearby))
|
||||
for (let n of nearby) {
|
||||
|
|
Loading…
Add table
Reference in a new issue