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.
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/xmldom as a peer-dependency only in node.js environments!
JavaScript browser environments always have a DOM implementation on board, therefore @xmldom/xmldom is not needed there.
Requires node.js and npm.
npm install pidf-lo
import { LocationMethod, PidfLo, XMLCompat, getNodeImpl, getWebImpl, } from 'pidf-lo'; // if xmldom interface is available (e.g. on web browsers) XMLCompat.initialize(getWebImpl()); // if xmldom interface is NOT available (e.g. on node environments) // also don't forget to install required peer dependency @xmldom/xmldom XMLCompat.initialize(getNodeImpl()); 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));
import { PidfLo, XMLCompat, getNodeImpl, getWebImpl, } from 'pidf-lo'; // if xmldom interface is available (e.g. on web browsers) XMLCompat.initialize(getWebImpl()); // if xmldom interface is NOT available (e.g. on node environments) // also don't forget to install required peer dependency @xmldom/xmldom XMLCompat.initialize(getNodeImpl()); 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}`);
import { LocationMethod, PidfLo, getNodeImpl, getWebImpl, } from 'pidf-lo'; // if xmldom interface is available (e.g. on web browsers) XMLCompat.initialize(getWebImpl()); // if xmldom interface is NOT available (e.g. on node environments) // also don't forget to install required peer dependency @xmldom/xmldom XMLCompat.initialize(getNodeImpl()); 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));
import { PidfLo, getNodeImpl, getWebImpl, } from 'pidf-lo'; // if xmldom interface is available (e.g. on web browsers) XMLCompat.initialize(getWebImpl()); // if xmldom interface is NOT available (e.g. on node environments) // also don't forget to install required peer dependency @xmldom/xmldom XMLCompat.initialize(getNodeImpl()); 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}`);
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Distributed under the MIT License. See LICENSE for more information.