| @@ 27-131 (lines=105) @@ | ||
| 24 | /** |
|
| 25 | * @author GeLo <[email protected]> |
|
| 26 | */ |
|
| 27 | class HeatmapLayerSubscriber extends AbstractSubscriber |
|
| 28 | { |
|
| 29 | /** |
|
| 30 | * @var HeatmapLayerCollector |
|
| 31 | */ |
|
| 32 | private $heatmapLayerCollector; |
|
| 33 | ||
| 34 | /** |
|
| 35 | * @var HeatmapLayerRenderer |
|
| 36 | */ |
|
| 37 | private $heatmapLayerRenderer; |
|
| 38 | ||
| 39 | /** |
|
| 40 | * @param Formatter $formatter |
|
| 41 | * @param HeatmapLayerCollector $heatmapLayerCollector |
|
| 42 | * @param HeatmapLayerRenderer $heatmapLayerRenderer |
|
| 43 | */ |
|
| 44 | public function __construct( |
|
| 45 | Formatter $formatter, |
|
| 46 | HeatmapLayerCollector $heatmapLayerCollector, |
|
| 47 | HeatmapLayerRenderer $heatmapLayerRenderer |
|
| 48 | ) { |
|
| 49 | parent::__construct($formatter); |
|
| 50 | ||
| 51 | $this->setHeatmapLayerCollector($heatmapLayerCollector); |
|
| 52 | $this->setHeatmapLayerRenderer($heatmapLayerRenderer); |
|
| 53 | } |
|
| 54 | ||
| 55 | /** |
|
| 56 | * @return HeatmapLayerCollector |
|
| 57 | */ |
|
| 58 | public function getHeatmapLayerCollector() |
|
| 59 | { |
|
| 60 | return $this->heatmapLayerCollector; |
|
| 61 | } |
|
| 62 | ||
| 63 | /** |
|
| 64 | * @param HeatmapLayerCollector $heatmapLayerCollector |
|
| 65 | */ |
|
| 66 | public function setHeatmapLayerCollector(HeatmapLayerCollector $heatmapLayerCollector) |
|
| 67 | { |
|
| 68 | $this->heatmapLayerCollector = $heatmapLayerCollector; |
|
| 69 | } |
|
| 70 | ||
| 71 | /** |
|
| 72 | * @return HeatmapLayerRenderer |
|
| 73 | */ |
|
| 74 | public function getHeatmapLayerRenderer() |
|
| 75 | { |
|
| 76 | return $this->heatmapLayerRenderer; |
|
| 77 | } |
|
| 78 | ||
| 79 | /** |
|
| 80 | * @param HeatmapLayerRenderer $heatmapLayerRenderer |
|
| 81 | */ |
|
| 82 | public function setHeatmapLayerRenderer(HeatmapLayerRenderer $heatmapLayerRenderer) |
|
| 83 | { |
|
| 84 | $this->heatmapLayerRenderer = $heatmapLayerRenderer; |
|
| 85 | } |
|
| 86 | ||
| 87 | /** |
|
| 88 | * @param ApiEvent $event |
|
| 89 | */ |
|
| 90 | public function handleApi(ApiEvent $event) |
|
| 91 | { |
|
| 92 | foreach ($event->getObjects(Map::class) as $map) { |
|
| 93 | $heatmapLayers = $this->heatmapLayerCollector->collect($map); |
|
| 94 | ||
| 95 | if (!empty($heatmapLayers)) { |
|
| 96 | $event->addLibrary('visualization'); |
|
| 97 | ||
| 98 | break; |
|
| 99 | } |
|
| 100 | } |
|
| 101 | } |
|
| 102 | ||
| 103 | /** |
|
| 104 | * @param MapEvent $event |
|
| 105 | */ |
|
| 106 | public function handleMap(MapEvent $event) |
|
| 107 | { |
|
| 108 | $formatter = $this->getFormatter(); |
|
| 109 | $map = $event->getMap(); |
|
| 110 | ||
| 111 | foreach ($this->heatmapLayerCollector->collect($map) as $heatmapLayer) { |
|
| 112 | $event->addCode($formatter->renderContainerAssignment( |
|
| 113 | $map, |
|
| 114 | $this->heatmapLayerRenderer->render($heatmapLayer, $map), |
|
| 115 | 'layers.heatmap_layers', |
|
| 116 | $heatmapLayer |
|
| 117 | )); |
|
| 118 | } |
|
| 119 | } |
|
| 120 | ||
| 121 | /** |
|
| 122 | * {@inheritdoc} |
|
| 123 | */ |
|
| 124 | public static function getSubscribedEvents() |
|
| 125 | { |
|
| 126 | return [ |
|
| 127 | ApiEvents::JAVASCRIPT_MAP => 'handleApi', |
|
| 128 | MapEvents::JAVASCRIPT_LAYER_HEATMAP_LAYER => 'handleMap' |
|
| 129 | ]; |
|
| 130 | } |
|
| 131 | } |
|
| 132 | ||
| @@ 27-131 (lines=105) @@ | ||
| 24 | /** |
|
| 25 | * @author GeLo <[email protected]> |
|
| 26 | */ |
|
| 27 | class EncodedPolylineSubscriber extends AbstractSubscriber |
|
| 28 | { |
|
| 29 | /** |
|
| 30 | * @var EncodedPolylineCollector |
|
| 31 | */ |
|
| 32 | private $encodedPolylineCollector; |
|
| 33 | ||
| 34 | /** |
|
| 35 | * @var EncodedPolylineRenderer |
|
| 36 | */ |
|
| 37 | private $encodedPolylineRenderer; |
|
| 38 | ||
| 39 | /** |
|
| 40 | * @param Formatter $formatter |
|
| 41 | * @param EncodedPolylineCollector $encodedPolylineCollector |
|
| 42 | * @param EncodedPolylineRenderer $encodedPolylineRenderer |
|
| 43 | */ |
|
| 44 | public function __construct( |
|
| 45 | Formatter $formatter, |
|
| 46 | EncodedPolylineCollector $encodedPolylineCollector, |
|
| 47 | EncodedPolylineRenderer $encodedPolylineRenderer |
|
| 48 | ) { |
|
| 49 | parent::__construct($formatter); |
|
| 50 | ||
| 51 | $this->setEncodedPolylineCollector($encodedPolylineCollector); |
|
| 52 | $this->setEncodedPolylineRenderer($encodedPolylineRenderer); |
|
| 53 | } |
|
| 54 | ||
| 55 | /** |
|
| 56 | * @return EncodedPolylineCollector |
|
| 57 | */ |
|
| 58 | public function getEncodedPolylineCollector() |
|
| 59 | { |
|
| 60 | return $this->encodedPolylineCollector; |
|
| 61 | } |
|
| 62 | ||
| 63 | /** |
|
| 64 | * @param EncodedPolylineCollector $encodedPolylineCollector |
|
| 65 | */ |
|
| 66 | public function setEncodedPolylineCollector(EncodedPolylineCollector $encodedPolylineCollector) |
|
| 67 | { |
|
| 68 | $this->encodedPolylineCollector = $encodedPolylineCollector; |
|
| 69 | } |
|
| 70 | ||
| 71 | /** |
|
| 72 | * @return EncodedPolylineRenderer |
|
| 73 | */ |
|
| 74 | public function getEncodedPolylineRenderer() |
|
| 75 | { |
|
| 76 | return $this->encodedPolylineRenderer; |
|
| 77 | } |
|
| 78 | ||
| 79 | /** |
|
| 80 | * @param EncodedPolylineRenderer $encodedPolylineRenderer |
|
| 81 | */ |
|
| 82 | public function setEncodedPolylineRenderer(EncodedPolylineRenderer $encodedPolylineRenderer) |
|
| 83 | { |
|
| 84 | $this->encodedPolylineRenderer = $encodedPolylineRenderer; |
|
| 85 | } |
|
| 86 | ||
| 87 | /** |
|
| 88 | * @param ApiEvent $event |
|
| 89 | */ |
|
| 90 | public function handleApi(ApiEvent $event) |
|
| 91 | { |
|
| 92 | foreach ($event->getObjects(Map::class) as $map) { |
|
| 93 | $encodedPolylines = $this->encodedPolylineCollector->collect($map); |
|
| 94 | ||
| 95 | if (!empty($encodedPolylines)) { |
|
| 96 | $event->addLibrary('geometry'); |
|
| 97 | ||
| 98 | break; |
|
| 99 | } |
|
| 100 | } |
|
| 101 | } |
|
| 102 | ||
| 103 | /** |
|
| 104 | * @param MapEvent $event |
|
| 105 | */ |
|
| 106 | public function handleMap(MapEvent $event) |
|
| 107 | { |
|
| 108 | $formatter = $this->getFormatter(); |
|
| 109 | $map = $event->getMap(); |
|
| 110 | ||
| 111 | foreach ($this->encodedPolylineCollector->collect($map) as $encodedPolyline) { |
|
| 112 | $event->addCode($formatter->renderContainerAssignment( |
|
| 113 | $map, |
|
| 114 | $this->encodedPolylineRenderer->render($encodedPolyline, $map), |
|
| 115 | 'overlays.encoded_polylines', |
|
| 116 | $encodedPolyline |
|
| 117 | )); |
|
| 118 | } |
|
| 119 | } |
|
| 120 | ||
| 121 | /** |
|
| 122 | * {@inheritdoc} |
|
| 123 | */ |
|
| 124 | public static function getSubscribedEvents() |
|
| 125 | { |
|
| 126 | return [ |
|
| 127 | ApiEvents::JAVASCRIPT_MAP => 'handleApi', |
|
| 128 | MapEvents::JAVASCRIPT_OVERLAY_ENCODED_POLYLINE => 'handleMap', |
|
| 129 | ]; |
|
| 130 | } |
|
| 131 | } |
|
| 132 | ||