<?xml version="1.0" encoding="UTF-8" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"
>
    <parameters>
        <parameter key="ivory_google_map.map.class">Ivory\GoogleMap\Map</parameter>
        <parameter key="ivory_google_map.map.builder.class">Ivory\GoogleMapBundle\Model\MapBuilder</parameter>
        <parameter key="ivory_google_map.map.helper.class">Ivory\GoogleMap\Helper\MapHelper</parameter>

        <parameter key="ivory_google_map.map_type_id.helper.class">Ivory\GoogleMap\Helper\MapTypeIdHelper</parameter>
    </parameters>

    <services>
        <!-- Map services -->
        <service
            id="ivory_google_map.map"
            class="%ivory_google_map.map.class%"
            factory-service="ivory_google_map.map.builder"
            factory-method="build"
            scope="prototype"
        />

        <service id="ivory_google_map.map.builder" class="%ivory_google_map.map.builder.class%">
            <argument>%ivory_google_map.map.class%</argument>
            <argument type="service" id="ivory_google_map.coordinate.builder" />
            <argument type="service" id="ivory_google_map.bound.builder" />
        </service>

        <service id="ivory_google_map.helper.map" class="%ivory_google_map.map.helper.class%">
            <argument type="service" id="ivory_google_map.helper.coordinate" />
            <argument type="service" id="ivory_google_map.helper.bound" />
            <argument type="service" id="ivory_google_map.helper.point" />
            <argument type="service" id="ivory_google_map.helper.size" />
            <argument type="service" id="ivory_google_map.helper.map_type_id" />
            <argument type="service" id="ivory_google_map.helper.map_type_control" />
            <argument type="service" id="ivory_google_map.helper.overview_map_control" />
            <argument type="service" id="ivory_google_map.helper.pan_control" />
            <argument type="service" id="ivory_google_map.helper.rotate_control" />
            <argument type="service" id="ivory_google_map.helper.scale_control" />
            <argument type="service" id="ivory_google_map.helper.street_view_control" />
            <argument type="service" id="ivory_google_map.helper.zoom_control" />
            <argument type="service" id="ivory_google_map.helper.marker_cluster" />
            <argument type="service" id="ivory_google_map.helper.marker_image" />
            <argument type="service" id="ivory_google_map.helper.marker_shape" />
            <argument type="service" id="ivory_google_map.helper.info_window" />
            <argument type="service" id="ivory_google_map.helper.polyline" />
            <argument type="service" id="ivory_google_map.helper.encoded_polyline" />
            <argument type="service" id="ivory_google_map.helper.polygon" />
            <argument type="service" id="ivory_google_map.helper.rectangle" />
            <argument type="service" id="ivory_google_map.helper.circle" />
            <argument type="service" id="ivory_google_map.helper.ground_overlay" />
            <argument type="service" id="ivory_google_map.helper.kml_layer" />
            <argument type="service" id="ivory_google_map.helper.event_manager" />
            <argument type="collection">
                <argument key="core" type="service" id="ivory_google_map.helper.extension.core" />
            </argument>
        </service>

        <!-- Map type ID service -->
        <service
            id="ivory_google_map.helper.map_type_id"
            class="%ivory_google_map.map_type_id.helper.class%"
            public="false"
        />
    </services>
</container>
