55 lines
1.5 KiB
Markdown
55 lines
1.5 KiB
Markdown
# @remotestorage/module-places
|
|
|
|
[](https://www.npmjs.com/package/@remotestorage/module-places)
|
|
|
|
This module allows you to manage saved places (Points of Interest) using the [remoteStorage](https://remotestorage.io/) protocol.
|
|
|
|
It leverages [Geohashes](https://www.geohash.es/) to organize data, enabling efficient retrieval of places within specific geographic areas. This structure is particularly optimized for map applications that need to load data only for the visible viewport.
|
|
|
|
For a demo application, as well as source code using this module, check out [Marco](https://marco.kosmos.org).
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pnpm add @remotestorage/module-places
|
|
```
|
|
|
|
## Usage
|
|
|
|
```javascript
|
|
import RemoteStorage from 'remotestoragejs';
|
|
import PlacesModule from '@remotestorage/module-places';
|
|
|
|
const remoteStorage = new RemoteStorage({
|
|
modules: [PlacesModule],
|
|
});
|
|
|
|
// Access the module
|
|
const places = remoteStorage.places;
|
|
|
|
// Store a place
|
|
await places.store({
|
|
title: 'My Favorite Coffee Shop',
|
|
lat: 52.520008,
|
|
lon: 13.404954,
|
|
});
|
|
|
|
// List all places
|
|
const allPlaces = await places.getPlaces();
|
|
console.log(allPlaces);
|
|
|
|
// List places for specific geohash prefixes (e.g. for a map view)
|
|
const areaPlaces = await places.getPlaces(['u33d', 'u33e']);
|
|
console.log(areaPlaces);
|
|
```
|
|
|
|
## API Reference
|
|
|
|
### Interfaces
|
|
|
|
- [PlacesClient](docs/interfaces/PlacesClient.md)
|
|
|
|
### Type Aliases
|
|
|
|
- [Place](docs/type-aliases/Place.md)
|