parent
4d783aae45
commit
aac736eba8
4 changed files with 8 additions and 19 deletions
|
@ -3,7 +3,6 @@ import * as polygon_features from "../../assets/polygon-features.json";
|
||||||
import {Store, UIEventSource} from "../UIEventSource";
|
import {Store, UIEventSource} from "../UIEventSource";
|
||||||
import {BBox} from "../BBox";
|
import {BBox} from "../BBox";
|
||||||
import * as OsmToGeoJson from "osmtogeojson";
|
import * as OsmToGeoJson from "osmtogeojson";
|
||||||
import {NodeId, OsmId, OsmTags, RelationId, WayId} from "../../Models/OsmFeature";
|
|
||||||
|
|
||||||
export abstract class OsmObject {
|
export abstract class OsmObject {
|
||||||
|
|
||||||
|
@ -39,12 +38,10 @@ export abstract class OsmObject {
|
||||||
throw "Backend URL must begin with http"
|
throw "Backend URL must begin with http"
|
||||||
}
|
}
|
||||||
this.backendURL = url;
|
this.backendURL = url;
|
||||||
|
this.DownloadObject("id/5")
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DownloadObject(id: NodeId, forceRefresh?: boolean ): Store<OsmNode> ;
|
public static DownloadObject(id: string, forceRefresh: boolean = false): Store<OsmObject> {
|
||||||
public static DownloadObject(id: WayId, forceRefresh?: boolean ): Store<OsmWay> ;
|
|
||||||
public static DownloadObject(id: RelationId, forceRefresh?: boolean ): Store<OsmRelation> ;
|
|
||||||
public static DownloadObject(id: OsmId, forceRefresh: boolean = false): Store<OsmObject> {
|
|
||||||
let src: UIEventSource<OsmObject>;
|
let src: UIEventSource<OsmObject>;
|
||||||
if (OsmObject.objectCache.has(id)) {
|
if (OsmObject.objectCache.has(id)) {
|
||||||
src = OsmObject.objectCache.get(id)
|
src = OsmObject.objectCache.get(id)
|
||||||
|
@ -54,14 +51,14 @@ export abstract class OsmObject {
|
||||||
return src;
|
return src;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
src = UIEventSource.FromPromise(OsmObject.DownloadObjectAsync(<any> id))
|
src = UIEventSource.FromPromise(OsmObject.DownloadObjectAsync(id))
|
||||||
}
|
}
|
||||||
|
|
||||||
OsmObject.objectCache.set(id, src);
|
OsmObject.objectCache.set(id, src);
|
||||||
return src;
|
return src;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async DownloadPropertiesOf(id: OsmId): Promise<OsmTags> {
|
static async DownloadPropertiesOf(id: string): Promise<any> {
|
||||||
const splitted = id.split("/");
|
const splitted = id.split("/");
|
||||||
const idN = Number(splitted[1]);
|
const idN = Number(splitted[1]);
|
||||||
if (idN < 0) {
|
if (idN < 0) {
|
||||||
|
@ -73,10 +70,7 @@ export abstract class OsmObject {
|
||||||
return rawData.elements[0].tags
|
return rawData.elements[0].tags
|
||||||
}
|
}
|
||||||
|
|
||||||
static async DownloadObjectAsync(id: NodeId): Promise<OsmNode | undefined>;
|
static async DownloadObjectAsync(id: string): Promise<OsmObject | undefined> {
|
||||||
static async DownloadObjectAsync(id: WayId): Promise<OsmWay | undefined>;
|
|
||||||
static async DownloadObjectAsync(id: RelationId): Promise<OsmRelation | undefined>;
|
|
||||||
static async DownloadObjectAsync(id: OsmId): Promise<OsmObject | undefined>{
|
|
||||||
const splitted = id.split("/");
|
const splitted = id.split("/");
|
||||||
const type = splitted[0];
|
const type = splitted[0];
|
||||||
const idN = Number(splitted[1]);
|
const idN = Number(splitted[1]);
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
import {Feature, Geometry} from "@turf/turf";
|
import {Feature, Geometry} from "@turf/turf";
|
||||||
|
|
||||||
export type RelationId = `relation/${number}`
|
export type OsmTags = Record<string, string> & {id: string}
|
||||||
export type WayId = `way/${number}`
|
|
||||||
export type NodeId = `node/${number}`
|
|
||||||
export type OsmId = NodeId | WayId | RelationId
|
|
||||||
|
|
||||||
export type OsmTags = Record<string, string> & {id: OsmId}
|
|
||||||
export type OsmFeature = Feature<Geometry, OsmTags>
|
export type OsmFeature = Feature<Geometry, OsmTags>
|
|
@ -41,7 +41,7 @@
|
||||||
"maxZoom": 14,
|
"maxZoom": 14,
|
||||||
"minNeededElements": 100
|
"minNeededElements": 100
|
||||||
},
|
},
|
||||||
"credits": "nicolelaine",
|
"credits": "nicolelaine"
|
||||||
"layers": [
|
"layers": [
|
||||||
"postboxes",
|
"postboxes",
|
||||||
"postoffices",
|
"postoffices",
|
||||||
|
|
|
@ -604,7 +604,7 @@ describe("RelationSplitHandler", () => {
|
||||||
"should split turn restrictions (split of https://www.openstreetmap.org/way/143298912)",
|
"should split turn restrictions (split of https://www.openstreetmap.org/way/143298912)",
|
||||||
async () => {
|
async () => {
|
||||||
|
|
||||||
const relation: OsmRelation = await OsmObject.DownloadObjectAsync("relation/4374576")
|
const relation: OsmRelation = <OsmRelation>await OsmObject.DownloadObjectAsync("relation/4374576")
|
||||||
const originalNodeIds =
|
const originalNodeIds =
|
||||||
[
|
[
|
||||||
1407529979,
|
1407529979,
|
||||||
|
|
Loading…
Reference in a new issue