GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

MapHelperBuilder   C
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 248
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 134

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 134
dl 0
loc 248
ccs 185
cts 185
cp 1
rs 5
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A build() 0 4 1
B createSubscribers() 0 234 1
1
<?php
2
3
/*
4
 * This file is part of the Ivory Google Map package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\GoogleMap\Helper\Builder;
13
14
use Ivory\GoogleMap\Helper\Collector\Base\BoundCollector;
15
use Ivory\GoogleMap\Helper\Collector\Base\CoordinateCollector;
16
use Ivory\GoogleMap\Helper\Collector\Base\PointCollector;
17
use Ivory\GoogleMap\Helper\Collector\Base\SizeCollector;
18
use Ivory\GoogleMap\Helper\Collector\Control\CustomControlCollector;
19
use Ivory\GoogleMap\Helper\Collector\Event\DomEventCollector;
20
use Ivory\GoogleMap\Helper\Collector\Event\DomEventOnceCollector;
21
use Ivory\GoogleMap\Helper\Collector\Event\EventCollector;
22
use Ivory\GoogleMap\Helper\Collector\Event\EventOnceCollector;
23
use Ivory\GoogleMap\Helper\Collector\Layer\GeoJsonLayerCollector;
24
use Ivory\GoogleMap\Helper\Collector\Layer\HeatmapLayerCollector;
25
use Ivory\GoogleMap\Helper\Collector\Layer\KmlLayerCollector;
26
use Ivory\GoogleMap\Helper\Collector\Overlay\CircleCollector;
27
use Ivory\GoogleMap\Helper\Collector\Overlay\DefaultInfoWindowCollector;
28
use Ivory\GoogleMap\Helper\Collector\Overlay\EncodedPolylineCollector;
29
use Ivory\GoogleMap\Helper\Collector\Overlay\ExtendableCollector;
30
use Ivory\GoogleMap\Helper\Collector\Overlay\GroundOverlayCollector;
31
use Ivory\GoogleMap\Helper\Collector\Overlay\IconCollector;
32
use Ivory\GoogleMap\Helper\Collector\Overlay\IconSequenceCollector;
33
use Ivory\GoogleMap\Helper\Collector\Overlay\InfoBoxCollector;
34
use Ivory\GoogleMap\Helper\Collector\Overlay\InfoWindowCollector;
35
use Ivory\GoogleMap\Helper\Collector\Overlay\MarkerCollector;
36
use Ivory\GoogleMap\Helper\Collector\Overlay\MarkerShapeCollector;
37
use Ivory\GoogleMap\Helper\Collector\Overlay\PolygonCollector;
38
use Ivory\GoogleMap\Helper\Collector\Overlay\PolylineCollector;
39
use Ivory\GoogleMap\Helper\Collector\Overlay\RectangleCollector;
40
use Ivory\GoogleMap\Helper\Collector\Overlay\SymbolCollector;
41
use Ivory\GoogleMap\Helper\MapHelper;
42
use Ivory\GoogleMap\Helper\Renderer\Base\BoundRenderer;
43
use Ivory\GoogleMap\Helper\Renderer\Base\CoordinateRenderer;
44
use Ivory\GoogleMap\Helper\Renderer\Base\PointRenderer;
45
use Ivory\GoogleMap\Helper\Renderer\Base\SizeRenderer;
46
use Ivory\GoogleMap\Helper\Renderer\Control\ControlManagerRenderer;
47
use Ivory\GoogleMap\Helper\Renderer\Control\ControlPositionRenderer;
48
use Ivory\GoogleMap\Helper\Renderer\Control\CustomControlRenderer;
49
use Ivory\GoogleMap\Helper\Renderer\Control\FullscreenControlRenderer;
50
use Ivory\GoogleMap\Helper\Renderer\Control\MapTypeControlRenderer;
51
use Ivory\GoogleMap\Helper\Renderer\Control\MapTypeControlStyleRenderer;
52
use Ivory\GoogleMap\Helper\Renderer\Control\RotateControlRenderer;
53
use Ivory\GoogleMap\Helper\Renderer\Control\ScaleControlRenderer;
54
use Ivory\GoogleMap\Helper\Renderer\Control\ScaleControlStyleRenderer;
55
use Ivory\GoogleMap\Helper\Renderer\Control\StreetViewControlRenderer;
56
use Ivory\GoogleMap\Helper\Renderer\Control\ZoomControlRenderer;
57
use Ivory\GoogleMap\Helper\Renderer\Control\ZoomControlStyleRenderer;
58
use Ivory\GoogleMap\Helper\Renderer\Event\DomEventOnceRenderer;
59
use Ivory\GoogleMap\Helper\Renderer\Event\DomEventRenderer;
60
use Ivory\GoogleMap\Helper\Renderer\Event\EventOnceRenderer;
61
use Ivory\GoogleMap\Helper\Renderer\Event\EventRenderer;
62
use Ivory\GoogleMap\Helper\Renderer\Geometry\EncodingRenderer;
63
use Ivory\GoogleMap\Helper\Renderer\Html\JavascriptTagRenderer;
64
use Ivory\GoogleMap\Helper\Renderer\Html\StylesheetRenderer;
65
use Ivory\GoogleMap\Helper\Renderer\Html\StylesheetTagRenderer;
66
use Ivory\GoogleMap\Helper\Renderer\Html\TagRenderer;
67
use Ivory\GoogleMap\Helper\Renderer\Layer\GeoJsonLayerRenderer;
68
use Ivory\GoogleMap\Helper\Renderer\Layer\HeatmapLayerRenderer;
69
use Ivory\GoogleMap\Helper\Renderer\Layer\KmlLayerRenderer;
70
use Ivory\GoogleMap\Helper\Renderer\MapBoundRenderer;
71
use Ivory\GoogleMap\Helper\Renderer\MapCenterRenderer;
72
use Ivory\GoogleMap\Helper\Renderer\MapContainerRenderer;
73
use Ivory\GoogleMap\Helper\Renderer\MapHtmlRenderer;
74
use Ivory\GoogleMap\Helper\Renderer\MapRenderer;
75
use Ivory\GoogleMap\Helper\Renderer\MapTypeIdRenderer;
76
use Ivory\GoogleMap\Helper\Renderer\Overlay\AnimationRenderer;
77
use Ivory\GoogleMap\Helper\Renderer\Overlay\CircleRenderer;
78
use Ivory\GoogleMap\Helper\Renderer\Overlay\DefaultInfoWindowRenderer;
79
use Ivory\GoogleMap\Helper\Renderer\Overlay\EncodedPolylineRenderer;
80
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\BoundsExtendableRenderer;
81
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\DefaultViewportExtendableRenderer;
82
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\ExtendableRenderer;
83
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\HeatmapLayerExtendableRenderer;
84
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\PathExtendableRenderer;
85
use Ivory\GoogleMap\Helper\Renderer\Overlay\Extendable\PositionExtendableRenderer;
86
use Ivory\GoogleMap\Helper\Renderer\Overlay\GroundOverlayRenderer;
87
use Ivory\GoogleMap\Helper\Renderer\Overlay\IconRenderer;
88
use Ivory\GoogleMap\Helper\Renderer\Overlay\IconSequenceRenderer;
89
use Ivory\GoogleMap\Helper\Renderer\Overlay\InfoBoxRenderer;
90
use Ivory\GoogleMap\Helper\Renderer\Overlay\InfoWindowCloseRenderer;
91
use Ivory\GoogleMap\Helper\Renderer\Overlay\InfoWindowOpenRenderer;
92
use Ivory\GoogleMap\Helper\Renderer\Overlay\MarkerClustererRenderer;
93
use Ivory\GoogleMap\Helper\Renderer\Overlay\MarkerRenderer;
94
use Ivory\GoogleMap\Helper\Renderer\Overlay\MarkerShapeRenderer;
95
use Ivory\GoogleMap\Helper\Renderer\Overlay\PolygonRenderer;
96
use Ivory\GoogleMap\Helper\Renderer\Overlay\PolylineRenderer;
97
use Ivory\GoogleMap\Helper\Renderer\Overlay\RectangleRenderer;
98
use Ivory\GoogleMap\Helper\Renderer\Overlay\SymbolPathRenderer;
99
use Ivory\GoogleMap\Helper\Renderer\Overlay\SymbolRenderer;
100
use Ivory\GoogleMap\Helper\Renderer\Utility\CallbackRenderer;
101
use Ivory\GoogleMap\Helper\Renderer\Utility\ObjectToArrayRenderer;
102
use Ivory\GoogleMap\Helper\Renderer\Utility\RequirementRenderer;
103
use Ivory\GoogleMap\Helper\Subscriber\Base\BaseSubscriber;
104
use Ivory\GoogleMap\Helper\Subscriber\Base\BoundSubscriber;
105
use Ivory\GoogleMap\Helper\Subscriber\Base\CoordinateSubscriber;
106
use Ivory\GoogleMap\Helper\Subscriber\Base\PointSubscriber;
107
use Ivory\GoogleMap\Helper\Subscriber\Base\SizeSubscriber;
108
use Ivory\GoogleMap\Helper\Subscriber\Control\ControlSubscriber;
109
use Ivory\GoogleMap\Helper\Subscriber\Control\CustomControlSubscriber;
110
use Ivory\GoogleMap\Helper\Subscriber\Event\DomEventOnceSubscriber;
111
use Ivory\GoogleMap\Helper\Subscriber\Event\DomEventSubscriber;
112
use Ivory\GoogleMap\Helper\Subscriber\Event\EventOnceSubscriber;
113
use Ivory\GoogleMap\Helper\Subscriber\Event\EventSubscriber;
114
use Ivory\GoogleMap\Helper\Subscriber\Event\SimpleEventSubscriber;
115
use Ivory\GoogleMap\Helper\Subscriber\Layer\GeoJsonLayerSubscriber;
116
use Ivory\GoogleMap\Helper\Subscriber\Layer\HeatmapLayerSubscriber;
117
use Ivory\GoogleMap\Helper\Subscriber\Layer\KmlLayerSubscriber;
118
use Ivory\GoogleMap\Helper\Subscriber\Layer\LayerSubscriber;
119
use Ivory\GoogleMap\Helper\Subscriber\MapBoundSubscriber;
120
use Ivory\GoogleMap\Helper\Subscriber\MapCenterSubscriber;
121
use Ivory\GoogleMap\Helper\Subscriber\MapContainerSubscriber;
122
use Ivory\GoogleMap\Helper\Subscriber\MapHtmlSubscriber;
123
use Ivory\GoogleMap\Helper\Subscriber\MapInitSubscriber;
124
use Ivory\GoogleMap\Helper\Subscriber\MapJavascriptSubscriber;
125
use Ivory\GoogleMap\Helper\Subscriber\MapStylesheetSubscriber;
126
use Ivory\GoogleMap\Helper\Subscriber\MapSubscriber;
127
use Ivory\GoogleMap\Helper\Subscriber\Overlay\CircleSubscriber;
128
use Ivory\GoogleMap\Helper\Subscriber\Overlay\DefaultInfoWindowSubscriber;
129
use Ivory\GoogleMap\Helper\Subscriber\Overlay\EncodedPolylineSubscriber;
130
use Ivory\GoogleMap\Helper\Subscriber\Overlay\ExtendableSubscriber;
131
use Ivory\GoogleMap\Helper\Subscriber\Overlay\GroundOverlaySubscriber;
132
use Ivory\GoogleMap\Helper\Subscriber\Overlay\IconSequenceSubscriber;
133
use Ivory\GoogleMap\Helper\Subscriber\Overlay\IconSubscriber;
134
use Ivory\GoogleMap\Helper\Subscriber\Overlay\InfoBoxSubscriber;
135
use Ivory\GoogleMap\Helper\Subscriber\Overlay\InfoWindowCloseSubscriber;
136
use Ivory\GoogleMap\Helper\Subscriber\Overlay\InfoWindowOpenSubscriber;
137
use Ivory\GoogleMap\Helper\Subscriber\Overlay\MarkerClustererSubscriber;
138
use Ivory\GoogleMap\Helper\Subscriber\Overlay\MarkerInfoWindowOpenSubscriber;
139
use Ivory\GoogleMap\Helper\Subscriber\Overlay\MarkerShapeSubscriber;
140
use Ivory\GoogleMap\Helper\Subscriber\Overlay\MarkerSubscriber;
141
use Ivory\GoogleMap\Helper\Subscriber\Overlay\OverlaySubscriber;
142
use Ivory\GoogleMap\Helper\Subscriber\Overlay\PolygonSubscriber;
143
use Ivory\GoogleMap\Helper\Subscriber\Overlay\PolylineSubscriber;
144
use Ivory\GoogleMap\Helper\Subscriber\Overlay\RectangleSubscriber;
145
use Ivory\GoogleMap\Helper\Subscriber\Overlay\SymbolSubscriber;
146
use Ivory\GoogleMap\Helper\Subscriber\Utility\ObjectToArraySubscriber;
147
use Ivory\GoogleMap\Layer\HeatmapLayer;
148
use Ivory\GoogleMap\Layer\KmlLayer;
149
use Ivory\GoogleMap\Overlay\Circle;
150
use Ivory\GoogleMap\Overlay\EncodedPolyline;
151
use Ivory\GoogleMap\Overlay\GroundOverlay;
152
use Ivory\GoogleMap\Overlay\InfoWindow;
153
use Ivory\GoogleMap\Overlay\Marker;
154
use Ivory\GoogleMap\Overlay\Polygon;
155
use Ivory\GoogleMap\Overlay\Polyline;
156
use Ivory\GoogleMap\Overlay\Rectangle;
157
158
/**
159
 * @author GeLo <[email protected]>
160
 */
161
class MapHelperBuilder extends AbstractJavascriptHelperBuilder
162
{
163
    /**
164
     * @return MapHelper
165
     */
166 220
    public function build()
167
    {
168 220
        return new MapHelper($this->createEventDispatcher());
169
    }
170
171
    /**
172
     * {@inheritdoc}
173
     */
174 220
    protected function createSubscribers()
175
    {
176 220
        $formatter = $this->getFormatter();
177 220
        $jsonBuilder = $this->getJsonBuilder();
178
179
        // Overlay collectors
180 220
        $markerCollector = new MarkerCollector();
181 220
        $polylineCollector = new PolylineCollector();
182 220
        $circleCollector = new CircleCollector();
183 220
        $defaultInfoWindowCollector = new DefaultInfoWindowCollector($markerCollector);
184 220
        $encodedPolylineCollector = new EncodedPolylineCollector();
185 220
        $extendableCollector = new ExtendableCollector();
186 220
        $groundOverlayCollector = new GroundOverlayCollector();
187 220
        $iconSequenceCollector = new IconSequenceCollector($polylineCollector);
188 220
        $infoBoxCollector = new InfoBoxCollector($markerCollector);
189 220
        $infoWindowCollector = new InfoWindowCollector($markerCollector);
190 220
        $iconCollector = new IconCollector($markerCollector);
191 220
        $markerShapeCollector = new MarkerShapeCollector($markerCollector);
192 220
        $polygonCollector = new PolygonCollector();
193 220
        $rectangleCollector = new RectangleCollector();
194 220
        $symbolCollector = new SymbolCollector($markerCollector, $iconSequenceCollector);
195
196
        // Layer collectors
197 220
        $geoJsonLayerCollector = new GeoJsonLayerCollector();
198 220
        $heatmapLayerCollector = new HeatmapLayerCollector();
199 220
        $kmlLayerCollector = new KmlLayerCollector();
200
201
        // Event collectors
202 220
        $domEventCollector = new DomEventCollector();
203 220
        $domEventOnceCollector = new DomEventOnceCollector();
204 220
        $eventCollector = new EventCollector();
205 220
        $eventOnceCollector = new EventOnceCollector();
206
207
        // Control collectors
208 220
        $customControlCollector = new CustomControlCollector();
209
210
        // Base collectors
211 220
        $boundCollector = new BoundCollector($groundOverlayCollector, $rectangleCollector);
212 220
        $pointCollector = new PointCollector($markerCollector);
213 220
        $sizeCollector = new SizeCollector($infoWindowCollector, $iconCollector);
214 220
        $coordinateCollector = new CoordinateCollector(
215 165
            $boundCollector,
216 165
            $circleCollector,
217 165
            $infoWindowCollector,
218 165
            $markerCollector,
219 165
            $polygonCollector,
220 165
            $polylineCollector,
221 55
            $heatmapLayerCollector
222 110
        );
223
224
        // Base renderers
225 220
        $boundRenderer = new BoundRenderer($formatter);
226 220
        $coordinateRenderer = new CoordinateRenderer($formatter);
227 220
        $mapTypeIdRenderer = new MapTypeIdRenderer($formatter);
228 220
        $pointRenderer = new PointRenderer($formatter);
229 220
        $sizeRenderer = new SizeRenderer($formatter);
230
231
        // Control renderers
232 220
        $controlPositionRenderer = new ControlPositionRenderer($formatter);
233 220
        $customControlRenderer = new CustomControlRenderer($formatter, $controlPositionRenderer);
234 220
        $fullscreenControlRenderer = new FullscreenControlRenderer($formatter, $jsonBuilder, $controlPositionRenderer);
235 220
        $mapTypeControlStyleRenderer = new MapTypeControlStyleRenderer($formatter);
236 220
        $rotateControlRenderer = new RotateControlRenderer($formatter, $jsonBuilder, $controlPositionRenderer);
237 220
        $scaleControlStyleRenderer = new ScaleControlStyleRenderer($formatter);
238 220
        $streetViewControlRenderer = new StreetViewControlRenderer($formatter, $jsonBuilder, $controlPositionRenderer);
239 220
        $zoomControlStyleRenderer = new ZoomControlStyleRenderer($formatter);
240
241 220
        $mapTypeControlRenderer = new MapTypeControlRenderer(
242 165
            $formatter,
243 165
            $jsonBuilder,
244 165
            $mapTypeIdRenderer,
245 165
            $controlPositionRenderer,
246 55
            $mapTypeControlStyleRenderer
247 110
        );
248
249 220
        $scaleControlRenderer = new ScaleControlRenderer(
250 165
            $formatter,
251 165
            $jsonBuilder,
252 165
            $controlPositionRenderer,
253 55
            $scaleControlStyleRenderer
254 110
        );
255
256 220
        $zoomControlRenderer = new ZoomControlRenderer(
257 165
            $formatter,
258 165
            $jsonBuilder,
259 165
            $controlPositionRenderer,
260 55
            $zoomControlStyleRenderer
261 110
        );
262
263 220
        $controlManagerRenderer = new ControlManagerRenderer();
264 220
        $controlManagerRenderer->addRenderer($fullscreenControlRenderer);
265 220
        $controlManagerRenderer->addRenderer($mapTypeControlRenderer);
266 220
        $controlManagerRenderer->addRenderer($rotateControlRenderer);
267 220
        $controlManagerRenderer->addRenderer($scaleControlRenderer);
268 220
        $controlManagerRenderer->addRenderer($streetViewControlRenderer);
269 220
        $controlManagerRenderer->addRenderer($zoomControlRenderer);
270
271
        // Event renderers
272 220
        $domEventOnceRenderer = new DomEventOnceRenderer($formatter);
273 220
        $domEventRenderer = new DomEventRenderer($formatter);
274 220
        $eventOnceRenderer = new EventOnceRenderer($formatter);
275 220
        $eventRenderer = new EventRenderer($formatter);
276
277
        // Geometry renderers
278 220
        $encodingRenderer = new EncodingRenderer($formatter);
279
280
        // Html renderers
281 220
        $tagRenderer = new TagRenderer($formatter);
282 220
        $javascriptTagRenderer = new JavascriptTagRenderer($formatter, $tagRenderer);
283 220
        $stylesheetRenderer = new StylesheetRenderer($formatter);
284 220
        $stylesheetTagRenderer = new StylesheetTagRenderer($formatter, $tagRenderer, $stylesheetRenderer);
285
286
        // Utility
287 220
        $callbackRenderer = new CallbackRenderer($formatter);
288 220
        $objectToArrayRenderer = new ObjectToArrayRenderer($formatter);
289 220
        $requirementRenderer = new RequirementRenderer($formatter);
290
291
        // Map renderers
292 220
        $mapBoundRenderer = new MapBoundRenderer($formatter);
293 220
        $mapCenterRenderer = new MapCenterRenderer($formatter);
294 220
        $mapContainerRenderer = new MapContainerRenderer($formatter, $jsonBuilder);
295 220
        $mapHtmlRenderer = new MapHtmlRenderer($formatter, $tagRenderer, $stylesheetRenderer);
296 220
        $mapRenderer = new MapRenderer(
297 165
            $formatter,
298 165
            $jsonBuilder,
299 165
            $mapTypeIdRenderer,
300 165
            $controlManagerRenderer,
301 55
            $requirementRenderer
302 110
        );
303
304
        // Overlay renderers
305 220
        $animationRenderer = new AnimationRenderer($formatter);
306 220
        $circleRenderer = new CircleRenderer($formatter, $jsonBuilder);
307 220
        $defaultInfoWindowRenderer = new DefaultInfoWindowRenderer($formatter, $jsonBuilder);
308 220
        $encodedPolylineRenderer = new EncodedPolylineRenderer($formatter, $jsonBuilder, $encodingRenderer);
309 220
        $groundOverlayRenderer = new GroundOverlayRenderer($formatter, $jsonBuilder);
310 220
        $infoBoxRenderer = new InfoBoxRenderer($formatter, $jsonBuilder, $requirementRenderer);
311 220
        $infoWindowCloseRenderer = new InfoWindowCloseRenderer($formatter);
312 220
        $infoWindowOpenRenderer = new InfoWindowOpenRenderer($formatter);
313 220
        $iconRenderer = new IconRenderer($formatter, $jsonBuilder);
314 220
        $iconSequenceRenderer = new IconSequenceRenderer($formatter, $jsonBuilder);
315 220
        $markerClustererRenderer = new MarkerClustererRenderer($formatter, $jsonBuilder, $requirementRenderer);
316 220
        $markerRenderer = new MarkerRenderer($formatter, $jsonBuilder, $animationRenderer);
317 220
        $markerShapeRenderer = new MarkerShapeRenderer($formatter, $jsonBuilder);
318 220
        $polygonRenderer = new PolygonRenderer($formatter, $jsonBuilder);
319 220
        $polylineRenderer = new PolylineRenderer($formatter, $jsonBuilder);
320 220
        $rectangleRenderer = new RectangleRenderer($formatter, $jsonBuilder);
321 220
        $symbolPathRenderer = new SymbolPathRenderer($formatter);
322 220
        $symbolRenderer = new SymbolRenderer($formatter, $jsonBuilder, $symbolPathRenderer);
323
324
        // Extendable renderers
325 220
        $defaultViewportExtendableRenderer = new DefaultViewportExtendableRenderer($formatter);
326 220
        $heatmapLayerExtendableRenderer = new HeatmapLayerExtendableRenderer($formatter);
327 220
        $pathExtendableRenderer = new PathExtendableRenderer($formatter);
328 220
        $positionExtendableRenderer = new PositionExtendableRenderer($formatter);
329 220
        $boundsExtendableRenderer = new BoundsExtendableRenderer($formatter);
330
331 220
        $extendableRenderer = new ExtendableRenderer();
332 220
        $extendableRenderer->setRenderer(Circle::class, $boundsExtendableRenderer);
333 220
        $extendableRenderer->setRenderer(EncodedPolyline::class, $pathExtendableRenderer);
334 220
        $extendableRenderer->setRenderer(GroundOverlay::class, $boundsExtendableRenderer);
335 220
        $extendableRenderer->setRenderer(HeatmapLayer::class, $heatmapLayerExtendableRenderer);
336 220
        $extendableRenderer->setRenderer(InfoWindow::class, $positionExtendableRenderer);
337 220
        $extendableRenderer->setRenderer(KmlLayer::class, $defaultViewportExtendableRenderer);
338 220
        $extendableRenderer->setRenderer(Marker::class, $positionExtendableRenderer);
339 220
        $extendableRenderer->setRenderer(Polyline::class, $pathExtendableRenderer);
340 220
        $extendableRenderer->setRenderer(Polygon::class, $pathExtendableRenderer);
341 220
        $extendableRenderer->setRenderer(Rectangle::class, $boundsExtendableRenderer);
342
343
        // Layer renderers
344 220
        $geoJsonLayerRenderer = new GeoJsonLayerRenderer($formatter, $jsonBuilder);
345 220
        $heatmapLayerRenderer = new HeatmapLayerRenderer($formatter, $jsonBuilder);
346 220
        $kmlLayerRenderer = new KmlLayerRenderer($formatter, $jsonBuilder);
347
348 220
        return array_merge([
349
            // Base
350 220
            new BaseSubscriber($formatter),
351 220
            new BoundSubscriber($formatter, $boundCollector, $boundRenderer),
352 220
            new CoordinateSubscriber($formatter, $coordinateCollector, $coordinateRenderer),
353 220
            new PointSubscriber($formatter, $pointCollector, $pointRenderer),
354 220
            new SizeSubscriber($formatter, $sizeCollector, $sizeRenderer),
355
356
            // Control
357 220
            new ControlSubscriber($formatter),
358 220
            new CustomControlSubscriber($formatter, $customControlCollector, $customControlRenderer),
359
360
            // Event
361 220
            new DomEventOnceSubscriber($formatter, $domEventOnceCollector, $domEventOnceRenderer),
362 220
            new DomEventSubscriber($formatter, $domEventCollector, $domEventRenderer),
363 220
            new EventOnceSubscriber($formatter, $eventOnceCollector, $eventOnceRenderer),
364 220
            new EventSubscriber($formatter),
365 220
            new SimpleEventSubscriber($formatter, $eventCollector, $eventRenderer),
366
367
            // Layer
368 220
            new GeoJsonLayerSubscriber($formatter, $geoJsonLayerCollector, $geoJsonLayerRenderer),
369 220
            new HeatmapLayerSubscriber($formatter, $heatmapLayerCollector, $heatmapLayerRenderer),
370 220
            new KmlLayerSubscriber($formatter, $kmlLayerCollector, $kmlLayerRenderer),
371 220
            new LayerSubscriber($formatter),
372
373
            // Overlay
374 220
            new CircleSubscriber($formatter, $circleCollector, $circleRenderer),
375 220
            new DefaultInfoWindowSubscriber($formatter, $defaultInfoWindowCollector, $defaultInfoWindowRenderer),
376 220
            new EncodedPolylineSubscriber($formatter, $encodedPolylineCollector, $encodedPolylineRenderer),
377 220
            new ExtendableSubscriber($formatter, $extendableCollector, $extendableRenderer),
378 220
            new GroundOverlaySubscriber($formatter, $groundOverlayCollector, $groundOverlayRenderer),
379 220
            new IconSequenceSubscriber($formatter, $iconSequenceCollector, $iconSequenceRenderer),
380 220
            new IconSubscriber($formatter, $iconCollector, $iconRenderer),
381 220
            new InfoBoxSubscriber($formatter, $infoBoxCollector, $infoBoxRenderer),
382 220
            new InfoWindowCloseSubscriber($formatter, $infoWindowCollector, $infoWindowCloseRenderer),
383 220
            new InfoWindowOpenSubscriber($formatter, $infoWindowCollector, $infoWindowOpenRenderer),
384 220
            new MarkerClustererSubscriber($formatter, $markerClustererRenderer),
385 220
            new MarkerInfoWindowOpenSubscriber($formatter, $markerCollector, $infoWindowOpenRenderer, $eventRenderer),
386 220
            new MarkerShapeSubscriber($formatter, $markerShapeCollector, $markerShapeRenderer),
387 220
            new MarkerSubscriber($formatter, $markerCollector, $markerRenderer),
388 220
            new OverlaySubscriber($formatter),
389 220
            new PolygonSubscriber($formatter, $polygonCollector, $polygonRenderer),
390 220
            new PolylineSubscriber($formatter, $polylineCollector, $polylineRenderer),
391 220
            new RectangleSubscriber($formatter, $rectangleCollector, $rectangleRenderer),
392 220
            new SymbolSubscriber($formatter, $symbolCollector, $symbolRenderer),
393
394
            // Map
395 220
            new MapBoundSubscriber($formatter, $mapBoundRenderer),
396 220
            new MapCenterSubscriber($formatter, $mapCenterRenderer),
397 220
            new MapContainerSubscriber($formatter, $mapContainerRenderer),
398 220
            new MapHtmlSubscriber($formatter, $mapHtmlRenderer),
399 220
            new MapInitSubscriber($formatter),
400 220
            new MapJavascriptSubscriber($formatter, $mapRenderer, $callbackRenderer, $javascriptTagRenderer),
401 220
            new MapStylesheetSubscriber($formatter, $stylesheetTagRenderer),
402 220
            new MapSubscriber($formatter, $mapRenderer),
403
404
            // Utility
405 220
            new ObjectToArraySubscriber($formatter, $objectToArrayRenderer),
406 220
        ], parent::createSubscribers());
407
    }
408
}
409