Skip to content

Simple PIDF-LO and GEOPRIV handling for javascript environments.

License

Notifications You must be signed in to change notification settings

andrewhamill/pidf-lo-javascript

 
 

Repository files navigation

pidf-lo - PIDF-LO and GEOPRIV handling

This library should simplify handling PIDF-LO GEOPRIV documents as described in https://tools.ietf.org/html/rfc5491.

This README currently only describes simple usage of this library. More elaborate implementation examples will be added by time.

Important Notices

This implemenentation only covers a small portion of the PIDF-LO specification documents and is (by far) not complete. Pull requests are therefore highly honored.

This library requires xmldom as a peer-dependency only in node.js environments! JavaScript browser environments always have a DOM implementation on board, therefore xmldom is not needed there.

Installation

Requires node.js and npm.

npm install pidf-lo

Simplified Usage (WGS84 locations)

PIDF-LO creation

import { 
  LocationMethod, 
  PidfLo, 
  XMLCompat,
// use `pidf-lo/dist/node` for node.js environments
} from 'pidf-lo/dist/browser';

const pidf = PidfLo.fromSimpleLocation({
  latitude: 48.123,
  longitude: 14.456,
  radius: 24,
  method: LocationMethod.GPS,
});

if (!pidf)
  throw 'Something is wrong with this location';

const xmlObj = pidf.toXML();
console.log(XMLCompat.toXMLString(xmlObj));

PIDF-LO parsing

import { 
  PidfLo, 
// use `pidf-lo/dist/node` for node.js environments
} from 'pidf-lo/dist/browser';

const parsed = PidfLo.fromXML('<xml...>');

if (!parsed || !parsed.simple)
  throw 'Something is wrong with this location';

const simpleLoc = parsed.simple;
console.log(`${simpleLoc.latitude} ${simpleLoc.longitude}`);

Usage (Civic Addresses)

PIDF-LO creation

import { 
  LocationMethod, 
  PidfLo, 
  XMLCompat,
// use `pidf-lo/dist/node` for node.js environments
} from 'pidf-lo/dist/browser';

const pidf = PidfLo.fromSimpleLocation({
  civic: {
    country: 'AT',
    A1: 'Upper Austria',
    A4: 'Schärding',
    FLR: '5',
    PC: '4780',
    NAM: 'Hospital',
  },
  method: LocationMethod['AP-802.11'],
}, 'lkh-schaerding.at');

if (!pidf)
  throw 'Something is wrong with this location';

const xmlObj = pidf.toXML();
console.log(XMLCompat.toXMLString(xmlObj));

PIDF-LO parsing

import { 
  PidfLo, 
// use `pidf-lo/dist/node` for node.js environments
} from 'pidf-lo/dist/browser';

const parsed = PidfLo.fromXML('<xml...>');

if (!parsed || !parsed.simple || !parsed.simple.civic)
  throw 'Something is wrong with this location';

const simpleCivic = parsed.simple.civic;
console.log(`${simpleCivic.country} ${simpleCivic.A1}`);

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

Distributed under the MIT License. See LICENSE for more information.

About

Simple PIDF-LO and GEOPRIV handling for javascript environments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 91.0%
  • JavaScript 9.0%