mapricot 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -8
- package/dist/index.d.ts +24 -0
- package/dist/index.js +12 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,14 +29,15 @@ Each method returns the API's JSON, typed, with the same field names as the [API
|
|
|
29
29
|
|
|
30
30
|
| Method | Endpoint |
|
|
31
31
|
| --- | --- |
|
|
32
|
-
| `client.search(q, { focus, country, limit, lang })` | [`GET /v1/search`](https://mapricot.com/docs/geocoding/#find-an-address) |
|
|
33
|
-
| `client.autocomplete(q, { focus, country, limit, lang })` | [`GET /v1/autocomplete`](https://mapricot.com/docs/
|
|
34
|
-
| `client.reverse(lat, lon, { limit, lang })` | [`GET /v1/reverse`](https://mapricot.com/docs/geocoding/#find-the-address-at-a-point) |
|
|
35
|
-
| `client.nearby(lat, lon, { category, radius, limit, lang })` | [`GET /v1/nearby`](https://mapricot.com/docs/places/#list-places-around-a-point) |
|
|
36
|
-
| `client.place(id, { lang })` | [`GET /v1/
|
|
37
|
-
| `client.route(waypoints, { mode, geometries })` | [`POST /v1/route`](https://mapricot.com/docs/routing/#get-a-route) |
|
|
38
|
-
| `client.
|
|
39
|
-
| `client.
|
|
32
|
+
| `client.search(q, { focus, country, limit, lang })` | [`GET /geocoding/v1/search`](https://mapricot.com/docs/geocoding/#find-an-address) |
|
|
33
|
+
| `client.autocomplete(q, { focus, country, limit, lang })` | [`GET /geocoding/v1/autocomplete`](https://mapricot.com/docs/geocoding/#suggest-as-people-type) |
|
|
34
|
+
| `client.reverse(lat, lon, { limit, lang })` | [`GET /geocoding/v1/reverse`](https://mapricot.com/docs/geocoding/#find-the-address-at-a-point) |
|
|
35
|
+
| `client.nearby(lat, lon, { category, radius, limit, lang })` | [`GET /places/v1/nearby`](https://mapricot.com/docs/places/#list-places-around-a-point) |
|
|
36
|
+
| `client.place(id, { lang })` | [`GET /places/v1/{id}`](https://mapricot.com/docs/places/#look-up-a-saved-place) |
|
|
37
|
+
| `client.route(waypoints, { mode, geometries })` | [`POST /routing/v1/route`](https://mapricot.com/docs/routing/#get-a-route) |
|
|
38
|
+
| `client.isochrone(location, minutes, { mode })` | [`POST /routing/v1/isochrone`](https://mapricot.com/docs/routing/#get-an-isochrone) |
|
|
39
|
+
| `client.ip(address)` | [`GET /ip-geolocation/v1/{ip}`](https://mapricot.com/docs/ip-geolocation/#look-up-an-address) |
|
|
40
|
+
| `client.account()` | `GET /account`, which checks a key and is never billed |
|
|
40
41
|
|
|
41
42
|
`focus` and each waypoint are `{ lat, lon }`. `country` and `category` take an array or a comma-separated string.
|
|
42
43
|
|
|
@@ -56,6 +57,13 @@ controller.abort();
|
|
|
56
57
|
|
|
57
58
|
A route's path comes as an encoded `polyline` with five decimal places, which polyline decoders assume. Pass `geometries: "geojson"` to get it as a GeoJSON `LineString` in `geometry` instead, which maps draw without decoding, or `geometries: "polyline6"` for six decimal places.
|
|
58
59
|
|
|
60
|
+
An isochrone is a GeoJSON `FeatureCollection` with one polygon per time, largest first, so a map that draws them in order shows the smaller ones on top:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
const area = await client.isochrone({ lat: 45.5189, lon: -122.6793 }, [5, 10], { mode: "walk" });
|
|
64
|
+
map.addSource("reach", { type: "geojson", data: area });
|
|
65
|
+
```
|
|
66
|
+
|
|
59
67
|
If your app shows results, show the credits in each response's `attribution`.
|
|
60
68
|
|
|
61
69
|
## Errors and retries
|
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,26 @@ export interface Routes {
|
|
|
55
55
|
routes: Route[];
|
|
56
56
|
attribution?: Attribution[];
|
|
57
57
|
}
|
|
58
|
+
export interface Isochrone {
|
|
59
|
+
type: "Feature";
|
|
60
|
+
properties: {
|
|
61
|
+
minutes: number;
|
|
62
|
+
};
|
|
63
|
+
/** [longitude, latitude] rings, as GeoJSON. */
|
|
64
|
+
geometry: {
|
|
65
|
+
type: "Polygon";
|
|
66
|
+
coordinates: [number, number][][];
|
|
67
|
+
} | {
|
|
68
|
+
type: "MultiPolygon";
|
|
69
|
+
coordinates: [number, number][][][];
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export interface Isochrones {
|
|
73
|
+
type: "FeatureCollection";
|
|
74
|
+
/** One area per time, largest first. Empty when there is no road near the location. */
|
|
75
|
+
features: Isochrone[];
|
|
76
|
+
attribution?: Attribution[];
|
|
77
|
+
}
|
|
58
78
|
export interface IpLocation {
|
|
59
79
|
ip: string;
|
|
60
80
|
found: boolean;
|
|
@@ -134,6 +154,10 @@ export declare class Mapricot {
|
|
|
134
154
|
mode?: "drive" | "walk" | "bicycle";
|
|
135
155
|
geometries?: "polyline" | "polyline6" | "geojson";
|
|
136
156
|
}): Promise<Routes>;
|
|
157
|
+
/** The areas reachable from a location within 1 to 4 times, each 1 to 60 minutes. */
|
|
158
|
+
isochrone(location: Point, minutes: number[], { signal, ...options }?: RequestOptions & {
|
|
159
|
+
mode?: "drive" | "walk" | "bicycle";
|
|
160
|
+
}): Promise<Isochrones>;
|
|
137
161
|
/** Approximate location of a public IP address. */
|
|
138
162
|
ip(address: string, { signal }?: RequestOptions): Promise<IpLocation>;
|
|
139
163
|
/** The key's account. Not billed, so it checks a key for free. */
|
package/dist/index.js
CHANGED
|
@@ -36,35 +36,39 @@ export class Mapricot {
|
|
|
36
36
|
}
|
|
37
37
|
/** Find addresses and places matching free text. */
|
|
38
38
|
search(q, { signal, ...options } = {}) {
|
|
39
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/v1/search", { q, ...options }, signal);
|
|
39
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/geocoding/v1/search", { q, ...options }, signal);
|
|
40
40
|
}
|
|
41
41
|
/** Suggest addresses and places as someone types. */
|
|
42
42
|
autocomplete(q, { signal, ...options } = {}) {
|
|
43
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/v1/autocomplete", { q, ...options }, signal);
|
|
43
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/geocoding/v1/autocomplete", { q, ...options }, signal);
|
|
44
44
|
}
|
|
45
45
|
/** Find the address nearest a coordinate, or the area around it. */
|
|
46
46
|
reverse(lat, lon, { signal, ...options } = {}) {
|
|
47
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/v1/reverse", { lat, lon, ...options }, signal);
|
|
47
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/geocoding/v1/reverse", { lat, lon, ...options }, signal);
|
|
48
48
|
}
|
|
49
49
|
/** List places around a coordinate, optionally by category. */
|
|
50
50
|
nearby(lat, lon, { signal, ...options } = {}) {
|
|
51
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/v1/nearby", { lat, lon, ...options }, signal);
|
|
51
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/places/v1/nearby", { lat, lon, ...options }, signal);
|
|
52
52
|
}
|
|
53
53
|
/** Look up one place by its Mapricot ID. */
|
|
54
54
|
place(id, { signal, ...options } = {}) {
|
|
55
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", `/v1
|
|
55
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", `/places/v1/${encodeURIComponent(id)}`, options, signal);
|
|
56
56
|
}
|
|
57
57
|
/** Find a route through 2 to 20 waypoints. */
|
|
58
58
|
route(waypoints, { signal, ...options } = {}) {
|
|
59
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "POST", "/v1/route", {}, signal, { waypoints, ...options });
|
|
59
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "POST", "/routing/v1/route", {}, signal, { waypoints, ...options });
|
|
60
|
+
}
|
|
61
|
+
/** The areas reachable from a location within 1 to 4 times, each 1 to 60 minutes. */
|
|
62
|
+
isochrone(location, minutes, { signal, ...options } = {}) {
|
|
63
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "POST", "/routing/v1/isochrone", {}, signal, { location, minutes, ...options });
|
|
60
64
|
}
|
|
61
65
|
/** Approximate location of a public IP address. */
|
|
62
66
|
ip(address, { signal } = {}) {
|
|
63
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", `/v1
|
|
67
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", `/ip-geolocation/v1/${encodeURIComponent(address)}`, {}, signal);
|
|
64
68
|
}
|
|
65
69
|
/** The key's account. Not billed, so it checks a key for free. */
|
|
66
70
|
account({ signal } = {}) {
|
|
67
|
-
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/
|
|
71
|
+
return __classPrivateFieldGet(this, _Mapricot_instances, "m", _Mapricot_request).call(this, "GET", "/account", {}, signal);
|
|
68
72
|
}
|
|
69
73
|
}
|
|
70
74
|
_Mapricot_apiKey = new WeakMap(), _Mapricot_baseUrl = new WeakMap(), _Mapricot_timeout = new WeakMap(), _Mapricot_maxRetries = new WeakMap(), _Mapricot_instances = new WeakSet(), _Mapricot_request = async function _Mapricot_request(method, path, params, signal, body) {
|