import gws
import gws.common.model
import gws.common.style
import gws.tools.svg
import gws.gis.extent
import gws.types as t
from . import layer, types
_FEATURE_FULL_FORMAT_THRESHOLD = 500
[docs]class Config(layer.Config):
display: types.DisplayMode = 'client' #: layer display mode
editDataModel: t.Optional[gws.common.model.Config] #: data model for input data
editStyle: t.Optional[gws.common.style.Config] #: style for features being edited
loadingStrategy: str = 'all' #: loading strategy for features ('all', 'bbox')
style: t.Optional[gws.common.style.Config] #: style for features
#:export IVectorLayer
[docs]class Vector(layer.Layer, t.IVectorLayer):
@property
def props(self):
p = super().props
if self.display == 'box':
return gws.merge(p, {
'type': 'box',
'url': gws.SERVER_ENDPOINT + '/cmd/mapHttpGetBox/layerUid/' + self.uid,
})
return gws.merge(p, {
'type': 'vector',
'loadingStrategy': self.var('loadingStrategy'),
'style': self.style,
'editStyle': self.edit_style,
'url': gws.SERVER_ENDPOINT + '/cmd/mapHttpGetFeatures/layerUid/' + self.uid,
})
[docs] def connect_feature(self, feature: t.IFeature) -> t.IFeature:
feature.layer = self
feature.templates = self.templates
feature.data_model = self.data_model
return feature
[docs] def render_box(self, rv, extra_params=None):
tags = self.render_svg_tags(rv)
gws.debug.time_start('render_box:to_png')
png = gws.tools.svg.as_png(tags, size=rv.size_px)
gws.debug.time_start('render_box:to_png')
return png