public function renderFieldAction(NodeInterface $node, $type, $sub_area = null, $locality = null)
    {
        $type = $type === 'all' ? null : $type;
        $sub_area = $sub_area === 'all' ? null : $sub_area;

        /** @var StoreLocatorInterface $storeLocator */
        $storeLocator = $this
            ->get('ucms_seo.store_locator_factory')
            ->create($node, $type, $sub_area, $locality);

        $build = [];

        if (node_is_page($node)) {
            $title = $storeLocator->getTitle();
            // @todo this is global state, therefore wrong
            drupal_set_title($node->title.' '.$title);

            // @todo this should be #attached
            drupal_add_js([
                'storeLocator' => ['items' => $storeLocator->getMapItems()],
            ], 'setting');

            $build['map'] = [
                '#theme'    => 'ucms_seo_store_locator_map',
                '#items'    => $storeLocator->getMapItems(),
                '#nodes'    => $storeLocator->getNodes(),
                '#type'     => $storeLocator->getTypeLabel($type),
                '#sub_area' => $storeLocator->getSubAreaLabel(),
                '#locality' => $storeLocator->getLocalityLabel(),
            ];
        }

        $build['store_links'] = [
            '#theme' => 'links__ucms_seo__store_locator',
            '#links' => $storeLocator->getLinks(),
        ];

        return $build;
    }