|
9 | 9 | IJupyterGISDoc,
|
10 | 10 | IJupyterGISModel,
|
11 | 11 | IRasterSource,
|
12 |
| - JupyterGISModel |
| 12 | + JupyterGISModel, |
| 13 | + IVectorLayer, |
| 14 | + IVectorTileSource |
13 | 15 | } from '@jupytergis/schema';
|
14 | 16 | import { showErrorMessage } from '@jupyterlab/apputils';
|
15 | 17 | import { IObservableMap, ObservableMap } from '@jupyterlab/observables';
|
@@ -169,8 +171,12 @@ export class MainView extends React.Component<IProps, IStates> {
|
169 | 171 | case 'VectorTileSource': {
|
170 | 172 | const mapSource = this._Map.getSource(id) as MapLibre.VectorTileSource;
|
171 | 173 | if (!mapSource) {
|
| 174 | + const parameters = source.parameters as IVectorTileSource; |
172 | 175 | this._Map.addSource(id, {
|
173 | 176 | type: 'vector',
|
| 177 | + minzoom: parameters.minZoom, |
| 178 | + maxzoom: parameters.maxZoom, |
| 179 | + attribution: parameters.attribution || '', |
174 | 180 | tiles: [this.computeSourceUrl(source)]
|
175 | 181 | });
|
176 | 182 | }
|
@@ -370,39 +376,34 @@ export class MainView extends React.Component<IProps, IStates> {
|
370 | 376 | break;
|
371 | 377 | }
|
372 | 378 | 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' |
391 | 385 | },
|
| 386 | + source: sourceId, |
| 387 | + }; |
| 388 | + |
| 389 | + parameters.sourceLayer && (layerSpecification['source-layer'] = parameters.sourceLayer); |
| 390 | + |
| 391 | + this._Map.addLayer( |
| 392 | + layerSpecification, |
392 | 393 | beforeId
|
393 | 394 | );
|
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 | + ); |
406 | 407 | break;
|
407 | 408 | }
|
408 | 409 | }
|
|
0 commit comments