Source Code
import { AutkMap, LayerType } from 'autk-map';
import { SpatialDb } from 'autk-db';
export class Map3D {
protected map!: AutkMap;
protected db!: SpatialDb;
public async run(canvas: HTMLCanvasElement): Promise {
this.db = new SpatialDb();
await this.db.init();
await this.db.loadOsmFromOverpassApi({
queryArea: {
geocodeArea: 'New York',
areas: ['Battery Park City', 'Financial District'],
},
outputTableName: 'table_osm',
autoLoadLayers: {
coordinateFormat: 'EPSG:3395',
layers: ['surface', 'parks', 'water', 'roads', 'buildings'] as Array<
'surface' | 'parks' | 'water' | 'roads' | 'buildings'
>,
dropOsmTable: true,
},
});
this.map = new AutkMap(canvas);
await this.map.init();
await this.loadLayers();
this.map.draw();
}
protected async loadLayers(): Promise {
for (const layerData of this.db.getLayerTables()) {
const geojson = await this.db.getLayer(layerData.name);
this.map.loadGeoJsonLayer(layerData.name, geojson, layerData.type as LayerType);
console.log(`Loading layer: ${layerData.name} of type ${layerData.type}`);
}
}
}
async function main() {
const canvas = document.querySelector('canvas');
if (!canvas) {
throw new Error('No canvas found');
}
const example = new Map3D();
await example.run(canvas);
}
main();