Basic working implementation
This commit is contained in:
parent
9cbc9f1293
commit
9a338c04e6
@ -34,6 +34,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
private initialized:boolean = false;
|
private initialized:boolean = false;
|
||||||
private mapEventHandlerInstalled = false;
|
private mapEventHandlerInstalled = false;
|
||||||
private selectedFeatures = {};
|
private selectedFeatures = {};
|
||||||
|
private selectionLayer:Layer = null;
|
||||||
|
|
||||||
constructor(private itemService: ItemService, @Host() private map: MapComponent, public appConfig: AppConfig) {
|
constructor(private itemService: ItemService, @Host() private map: MapComponent, public appConfig: AppConfig) {
|
||||||
super(map);
|
super(map);
|
||||||
@ -195,7 +196,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
if(l.minzoom) {
|
if(l.minzoom) {
|
||||||
layer.setMinZoom(l.minzoom);
|
layer.setMinZoom(14);
|
||||||
}
|
}
|
||||||
if(l.maxzoom) {
|
if(l.maxzoom) {
|
||||||
layer.setMaxZoom(l.maxzoom);
|
layer.setMaxZoom(l.maxzoom);
|
||||||
@ -203,6 +204,39 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
return layer;
|
return layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createSelectionLayer(itemLayer:IItemLayer):Layer {
|
||||||
|
var layerIndex = -1;
|
||||||
|
var layer: Layer = null;
|
||||||
|
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : itemLayer.item.data.layers[0].index;
|
||||||
|
var data = itemLayer.item.data;
|
||||||
|
var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
|
||||||
|
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
|
||||||
|
return new VectorTileLayer({
|
||||||
|
renderMode: 'vector',
|
||||||
|
source: itemLayer.layer.getSource(),
|
||||||
|
style: (feature) => {
|
||||||
|
if (feature.getId() in this.selectedFeatures) {
|
||||||
|
|
||||||
|
return new style.Style(
|
||||||
|
{
|
||||||
|
fill: new style.Fill({
|
||||||
|
color: 'red'
|
||||||
|
}),
|
||||||
|
stroke: new style.Stroke({
|
||||||
|
color: 'red',
|
||||||
|
width: 1.25
|
||||||
|
})
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
minZoom: itemLayer.layer.getMinZoom(),
|
||||||
|
maxZoom: itemLayer.layer.getMaxZoom()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer {
|
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer {
|
||||||
let data = item.data as ILayerData;
|
let data = item.data as ILayerData;
|
||||||
var layer: Layer = null;
|
var layer: Layer = null;
|
||||||
@ -346,6 +380,11 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
while(olLayers.getLength() > newLayers.length) {
|
while(olLayers.getLength() > newLayers.length) {
|
||||||
olLayers.removeAt(newLayers.length);
|
olLayers.removeAt(newLayers.length);
|
||||||
}
|
}
|
||||||
|
this.selectionLayer=null;
|
||||||
|
if(this.mapEventHandlerInstalled && itemLayers.length==1 && itemLayers[0].item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
|
||||||
|
this.selectionLayer = this.createSelectionLayer(itemLayers[0]);
|
||||||
|
olLayers.push(this.selectionLayer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,7 +398,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
let fid = features[0].getId();
|
let fid = features[0].getId();
|
||||||
this.selectedFeatures[fid] = features[0];
|
this.selectedFeatures[fid] = features[0];
|
||||||
console.debug(features[0]);
|
console.debug(features[0]);
|
||||||
//this.itemLayer.layer.changed();
|
if(this.selectionLayer) this.selectionLayer.changed();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -379,8 +418,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
|
|||||||
}
|
}
|
||||||
this.updateLayers([itemLayer]);
|
this.updateLayers([itemLayer]);
|
||||||
} else {
|
} else {
|
||||||
this.updateLayers([]);
|
|
||||||
this.unInstallMapEventHandler();
|
this.unInstallMapEventHandler();
|
||||||
|
this.updateLayers([]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user