Skip to content

Commit e373e53

Browse files
committed
Working example to be polished
1 parent fb41984 commit e373e53

File tree

5 files changed

+68
-60
lines changed

5 files changed

+68
-60
lines changed

examples/buildings.jGIS

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
11
{
22
"layers": {
3-
"f99eb7b0-5e38-4078-b310-36a0746472aa": {
3+
"148f2fb3-3077-4dcb-8d70-831570d5021f": {
44
"visible": true,
5-
"name": "OpenStreetMap.Mapnik Layer",
5+
"name": "Vector Tile Source Layer",
66
"parameters": {
7-
"source": "ed8628b0-3e0a-45d5-9cd0-65e2a7dd61f5"
7+
"source": "7a7ee6fd-c1e2-4c5d-a4e2-a7974db138a4",
8+
"color": "green",
9+
"type": "line",
10+
"opacity": 1.0,
11+
"sourceLayer": "bingmlbuildings"
812
},
9-
"type": "RasterLayer"
13+
"type": "VectorLayer"
1014
},
11-
"148f2fb3-3077-4dcb-8d70-831570d5021f": {
12-
"type": "VectorLayer",
15+
"f99eb7b0-5e38-4078-b310-36a0746472aa": {
1316
"parameters": {
14-
"type": "line",
15-
"source": "7a7ee6fd-c1e2-4c5d-a4e2-a7974db138a4"
17+
"source": "ed8628b0-3e0a-45d5-9cd0-65e2a7dd61f5"
1618
},
17-
"name": "Vector Tile Source Layer",
18-
"visible": true
19+
"visible": true,
20+
"type": "RasterLayer",
21+
"name": "OpenStreetMap.Mapnik Layer"
1922
}
2023
},
2124
"sources": {
25+
"7a7ee6fd-c1e2-4c5d-a4e2-a7974db138a4": {
26+
"name": "Vector Tile Source",
27+
"parameters": {
28+
"minZoom": 13.0,
29+
"url": "https://planetarycomputer.microsoft.com/api/data/v1/vector/collections/ms-buildings/tilesets/global-footprints/tiles/{z}/{x}/{y}",
30+
"maxZoom": 13.0
31+
},
32+
"type": "VectorTileSource"
33+
},
2234
"ed8628b0-3e0a-45d5-9cd0-65e2a7dd61f5": {
2335
"parameters": {
24-
"urlParameters": {},
2536
"provider": "OpenStreetMap",
26-
"minZoom": 0.0,
2737
"url": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
38+
"maxZoom": 19.0,
2839
"attribution": "(C) OpenStreetMap contributors",
29-
"maxZoom": 19.0
40+
"minZoom": 0.0,
41+
"urlParameters": {}
3042
},
3143
"type": "RasterSource",
3244
"name": "OpenStreetMap.Mapnik"
33-
},
34-
"7a7ee6fd-c1e2-4c5d-a4e2-a7974db138a4": {
35-
"type": "VectorTileSource",
36-
"name": "Vector Tile Source",
37-
"parameters": {
38-
"url": "https://planetarycomputer.microsoft.com/api/data/v1/vector/collections/ms-buildings/tilesets/global-footprints/tiles/{z}/{x}/{y}",
39-
"minZoom": 0.0,
40-
"maxZoom": 24.0
41-
}
4245
}
4346
},
4447
"options": {
45-
"latitude": 41.91867,
46-
"longitude": -88.10602,
47-
"zoom": 15.0
48+
"longitude": -88.13435505719718,
49+
"zoom": 14.558550718914468,
50+
"latitude": 41.924770461743464
4851
},
4952
"layerTree": [
5053
"f99eb7b0-5e38-4078-b310-36a0746472aa",

packages/base/src/mainview/mainview.tsx

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import {
99
IJupyterGISDoc,
1010
IJupyterGISModel,
1111
IRasterSource,
12-
JupyterGISModel
12+
JupyterGISModel,
13+
IVectorLayer,
14+
IVectorTileSource
1315
} from '@jupytergis/schema';
1416
import { showErrorMessage } from '@jupyterlab/apputils';
1517
import { IObservableMap, ObservableMap } from '@jupyterlab/observables';
@@ -169,8 +171,12 @@ export class MainView extends React.Component<IProps, IStates> {
169171
case 'VectorTileSource': {
170172
const mapSource = this._Map.getSource(id) as MapLibre.VectorTileSource;
171173
if (!mapSource) {
174+
const parameters = source.parameters as IVectorTileSource;
172175
this._Map.addSource(id, {
173176
type: 'vector',
177+
minzoom: parameters.minZoom,
178+
maxzoom: parameters.maxZoom,
179+
attribution: parameters.attribution || '',
174180
tiles: [this.computeSourceUrl(source)]
175181
});
176182
}
@@ -370,39 +376,34 @@ export class MainView extends React.Component<IProps, IStates> {
370376
break;
371377
}
372378
case 'VectorLayer': {
373-
const vectorLayerType = layer.parameters?.type;
374-
if (!vectorLayerType) {
375-
showErrorMessage(
376-
'Vector layer error',
377-
'The vector layer type is undefined'
378-
);
379-
}
380-
this._Map.addLayer(
381-
{
382-
id: id,
383-
type: 'line',
384-
"source-layer": 'buildings',
385-
layout: {
386-
visibility: layer.visible ? 'visible' : 'none'
387-
},
388-
source: sourceId,
389-
minzoom: source.parameters?.minZoom || 0,
390-
maxzoom: source.parameters?.maxZoom || 24
379+
const parameters = layer.parameters as IVectorLayer;
380+
const layerSpecification: MapLibre.AddLayerObject = {
381+
id,
382+
type: parameters.type,
383+
layout: {
384+
visibility: layer.visible ? 'visible' : 'none'
391385
},
386+
source: sourceId,
387+
};
388+
389+
parameters.sourceLayer && (layerSpecification['source-layer'] = parameters.sourceLayer);
390+
391+
this._Map.addLayer(
392+
layerSpecification,
392393
beforeId
393394
);
394-
// this._Map.setPaintProperty(
395-
// id,
396-
// `${vectorLayerType}-color`,
397-
// layer.parameters?.color !== undefined
398-
// ? layer.parameters.color
399-
// : '#FF0000'
400-
// );
401-
// this._Map.setPaintProperty(
402-
// id,
403-
// `${vectorLayerType}-opacity`,
404-
// layer.parameters?.opacity !== undefined ? layer.parameters.opacity : 1
405-
// );
395+
this._Map.setPaintProperty(
396+
id,
397+
`${parameters.type}-color`,
398+
parameters.color !== undefined
399+
? parameters.color
400+
: '#FF0000'
401+
);
402+
this._Map.setPaintProperty(
403+
id,
404+
`${parameters.type}-opacity`,
405+
parameters.opacity !== undefined ? parameters.opacity : 1
406+
);
406407
break;
407408
}
408409
}

packages/schema/src/schema/vectorLayer.json renamed to packages/schema/src/schema/vectorlayer.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"type": "object",
33
"description": "VectorLayer",
44
"title": "IVectorLayer",
5-
"required": ["source"],
5+
"required": ["source", "type"],
66
"additionalProperties": false,
77
"properties": {
88
"source": {
@@ -15,6 +15,10 @@
1515
"default": "line",
1616
"description": "The type of vector layer"
1717
},
18+
"sourceLayer": {
19+
"type": "string",
20+
"description": "The source layer to use"
21+
},
1822
"color": {
1923
"type": "string",
2024
"description": "The color of the the object",

packages/schema/src/schema/vectortilesource.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,16 @@
1313
"type": "number",
1414
"minimum": 0,
1515
"maximum": 24,
16-
"readOnly": true,
1716
"description": "The maximum zoom level for the raster source"
1817
},
1918
"minZoom": {
2019
"type": "number",
2120
"minimum": 0,
2221
"maximum": 24,
23-
"readOnly": true,
2422
"description": "The minimum zoom level for the raster source"
2523
},
2624
"attribution": {
2725
"type": "string",
28-
"readOnly": true,
2926
"description": "The attribution for the raster source"
3027
},
3128
"provider": {

packages/schema/src/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
export * from './_interface/jgis';
22
export * from './_interface/rasterlayer';
3+
export * from './_interface/vectorlayer';
34
export * from './_interface/rastersource';
5+
export * from './_interface/vectortilesource';
6+
export * from './_interface/geojsonsource';
47
export * from './interfaces';
58
export * from './model';
69
export * from './doc';

0 commit comments

Comments
 (0)