Package Exports
- @klarna/geofences-reducer
- @klarna/geofences-reducer/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@klarna/geofences-reducer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Geofences Reducer
Reduces overlapping geofences.
Given a list of circular geofences, this library removes the overlapping items and returns a reduced list that could be used to represent the same area.
Usage example
Installation
Via npm:
npm install @klarna/geofences-reducer --save
Via yarn:
yarn add @klarna/geofences-reducer
Usage
With JavaScript:
const reducer = require('@klarna/geofences-reducer')
const geofences = [
{
latitude: 51.51,
longitude: -0.36,
radius: 20000 // in meters
},
{
latitude: 51.51,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.6,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.51,
longitude: 0.12,
radius: 20000 // in meters
},
{
latitude: 51.15,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.72,
longitude: -0.07,
radius: 20000 // in meters
}
]
const geofencesReduced = reducer.reduce(geofences)
With TypeScript:
import * as reducer from '@klarna/geofences-reducer'
type Geofence = {
latitude: number
longitude: number
radius: number
}
const geofences: Geofence[] = [
{
latitude: 51.51,
longitude: -0.36,
radius: 20000 // in meters
},
{
latitude: 51.51,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.6,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.51,
longitude: 0.12,
radius: 20000 // in meters
},
{
latitude: 51.15,
longitude: -0.07,
radius: 20000 // in meters
},
{
latitude: 51.72,
longitude: -0.07,
radius: 20000 // in meters
}
]
const geofencesReduced: Geofence[] = reducer.reduce(geofences)
Result:
Optional Configuration
Precision
Precision can be customized as follows:
const config = {
precision: 5 // 6 by default, accepts 1 to 12
}
const geofencesReduced = reducer.reduce(geofences, config)
Development setup
Install project dependencies:
npm install
Run automated test-suite:
npm test
How to contribute
See our guide on contributing.
Release History
See our changelog.
License
Copyright © 2021 Klarna Bank AB
For license details, see the LICENSE file in the root of this project.