/**
  * {@inheritdoc}
  * @SuppressWarnings(PHPMD.Superglobals)
  */
 protected function build(Definition $definition, \Model $model, DefinitionMapper $mapper, Filter $filter = null, Definition $parent = null)
 {
     parent::build($definition, $model, $mapper, $filter, $parent);
     /** @var MarkerClusterGroup $definition */
     if ($model->iconCreateFunction) {
         $definition->setIconCreateFunction(new Expression($model->iconCreateFunction));
     }
     if ($model->polygonOptions) {
         $definition->setPolygonOptions((array) json_decode($model->polygonOptions, true));
     }
     if (!$model->disableDefaultStyle) {
         $GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/leaflet-markercluster/MarkerCluster.Default.css||static';
     }
     $collection = LayerModel::findBy(array('pid=?', 'active=1'), array($model->id), array('order' => 'sorting'));
     if ($collection) {
         foreach ($collection as $layerModel) {
             $layer = $mapper->handle($layerModel);
             if ($layer instanceof Layer) {
                 $definition->addLayer($layer);
                 if ($layer instanceof OmnivoreLayer) {
                     $callback = new AnonymousFunction();
                     $callback->addLine('layers.' . $definition->getId() . '.addLayers(this.getLayers())');
                     $layer->on('ready', $callback);
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 protected function build(Definition $definition, \Model $model, DefinitionMapper $mapper, Filter $filter = null, Definition $parent = null)
 {
     parent::build($definition, $model, $mapper, $filter, $parent);
     /** @var TileLayer $definition */
     $filter = deserialize($model->bounds);
     if ($filter[0] && $filter[1]) {
         $filter = array_map(function ($value) {
             return explode(',', $value, 3);
         }, $filter);
         $filter = LatLngBounds::fromArray($filter);
         $definition->setBounds($filter);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function buildConstructArguments(\Model $model, DefinitionMapper $mapper, Filter $filter = null, $elementId = null)
 {
     if ($model->deferred) {
         if ($model->pointToLayer || $model->boundsMode) {
             $layer = new GeoJson($this->getElementId($model, $elementId));
             if ($model->pointToLayer) {
                 $layer->setPointToLayer(new Expression($model->pointToLayer));
             }
             if ($model->boundsMode) {
                 $layer->setOption('boundsMode', $model->boundsMode);
             }
             return array($this->getElementId($model, $elementId), RequestUrl::create($model->id, null, null, $filter), array(), $layer);
         }
         return array($this->getElementId($model, $elementId), RequestUrl::create($model->id, null, null, $filter));
     }
     return parent::buildConstructArguments($model, $mapper, $filter, $elementId);
 }
 /**
  * {@inheritdoc}
  */
 protected function buildConstructArguments(\Model $model, DefinitionMapper $mapper, Filter $filter = null, $elementId = null)
 {
     if ($model->deferred) {
         $options = array();
         if ($model->pointToLayer) {
             $options['pointToLayer'] = new Expression($model->pointToLayer);
         }
         if ($model->onEachFeature) {
             $options['onEachFeature'] = new Expression($model->onEachFeature);
         }
         if ($model->boundsMode) {
             $options['boundsMode'] = $model->boundsMode;
         }
         if (!empty($options)) {
             $layer = new GeoJson($this->getElementId($model, $elementId));
             $layer->setOptions($options);
             return array($this->getElementId($model, $elementId), RequestUrl::create($model->id, null, null, $filter), array(), $layer);
         }
         return array($this->getElementId($model, $elementId), RequestUrl::create($model->id, null, null, $filter));
     }
     return parent::buildConstructArguments($model, $mapper, $filter, $elementId);
 }
 /**
  * {@inheritdoc}
  */
 protected function build(Definition $definition, \Model $model, DefinitionMapper $mapper, Filter $filter = null, Definition $parent = null)
 {
     parent::build($definition, $model, $mapper, $filter);
     if ($definition instanceof OmnivoreLayer) {
         $metaModel = Factory::byId($model->metamodel);
         $items = $this->getItems($metaModel, $model, $filter);
         if (!$items->getCount()) {
             return;
         }
         /** @var GeoJson $layer */
         $layer = $definition->getCustomLayer();
         $collection = $layer->getInitializationData();
         $renderers = $this->getRenderers($model, $metaModel, $items, $mapper, $filter);
         if ($model->boundsMode) {
             $layer->setOption('boundsMode', $model->boundsMode);
         }
         foreach ($items as $item) {
             foreach ($renderers as $renderer) {
                 $renderer->loadData($item, $collection, $mapper, $definition->getId(), $filter);
                 $renderer->loadLayers($item, $layer, $mapper, $filter);
             }
         }
     }
 }
 /**
  * Construct.
  *
  * @param array $providers Registered providers.
  */
 public function __construct(array $providers)
 {
     $this->providers = $providers;
     parent::__construct();
 }
 /**
  * {@inheritdoc}
  */
 protected function initialize()
 {
     parent::initialize();
     $this->optionsBuilder->addOption('query', 'overpassQuery')->addOption('minZoom')->addOption('boundsMode')->addOption('overpassEndpoint', 'endpoint');
 }
 /**
  * Construct.
  *
  * @SuppressWarnings(PHPMD.Superglobals)
  */
 public function __construct()
 {
     $this->providers =& $GLOBALS['LEAFLET_TILE_PROVIDERS'];
     parent::__construct();
 }