Geo_Map::GetMultiMapTagHeader PHP Метод

GetMultiMapTagHeader() публичный статический Метод

Gives the header part for the multi-map front end presentation
public static GetMultiMapTagHeader ( integer $p_languageId, $p_constraints, array $p_options, integer $p_offset, integer $p_limit, integer $p_mapWidth, integer $p_mapHeight, integer $p_rank ) : string
$p_languageId integer
$p_options array
$p_offset integer
$p_limit integer
$p_mapWidth integer
$p_mapHeight integer
$p_rank integer The rank of the current multi-map, used to make unique ids
Результат string
    public static function GetMultiMapTagHeader($p_languageId, $p_constraints, $p_options, $p_offset, $p_limit, $p_mapWidth, $p_mapHeight, $p_rank = 0)
    {
        global $Campsite;
        $tag_string = '';
        $tag_string_top = '';
        $tag_string_gv3_async = false;
        $tag_string_ini = '';
        $tag_string_mid = '';
        $tag_string_fin = '';
        $points = null;
        $pois_loaded = false;
        $max_zoom = null;
        $map_margin = null;
        $load_common = true;
        $area_points = null;
        $area_points_empty_only = 'false';
        $width_dyn = false;
        $height_dyn = false;
        if (is_array($p_options)) {
            if (array_key_exists('pois_retrieved', $p_options)) {
                $pois_loaded = $p_options['pois_retrieved'];
            }
            if (array_key_exists('max_zoom', $p_options)) {
                $max_zoom = $p_options['max_zoom'];
            }
            if (array_key_exists('map_margin', $p_options)) {
                $map_margin = $p_options['map_margin'];
            }
            if (array_key_exists('load_common', $p_options)) {
                $load_common = $p_options['load_common'];
            }
            if (array_key_exists('area_points', $p_options)) {
                $area_points = $p_options['area_points'];
            }
            if (array_key_exists('area_points_empty_only', $p_options)) {
                if ($p_options['area_points_empty_only']) {
                    $area_points_empty_only = 'true';
                }
            }
            if (array_key_exists('width_dyn', $p_options)) {
                $width_dyn = $p_options['width_dyn'];
            }
            if (array_key_exists('height_dyn', $p_options)) {
                $height_dyn = $p_options['height_dyn'];
            }
        }
        $large_map_on_click = false;
        $open_large_map = false;
        $width_large_map = 800;
        $height_large_map = 600;
        $label_large_map = '';
        if (is_array($p_options)) {
            if (array_key_exists('large_map_on_click', $p_options)) {
                $large_map_on_click = $p_options['large_map_on_click'];
            }
            if (array_key_exists('large_map_open', $p_options)) {
                $open_large_map = $p_options['large_map_open'];
            }
            if ($large_map_on_click && !$open_large_map) {
                $open_large_map = true;
            }
            if (array_key_exists('large_map_width', $p_options)) {
                $width_large_map_param = 0 + $p_options['large_map_width'];
                if (0 < $width_large_map_param) {
                    $width_large_map = $width_large_map_param;
                }
            }
            if (array_key_exists('large_map_height', $p_options)) {
                $height_large_map_param = 0 + $p_options['large_map_height'];
                if (0 < $height_large_map_param) {
                    $height_large_map = $height_large_map_param;
                }
            }
            if (array_key_exists('large_map_label', $p_options)) {
                $label_large_map_param = '' . $p_options['large_map_label'];
                if ('' != $label_large_map_param) {
                    $label_large_map = $label_large_map_param;
                }
            }
        }
        if (!$pois_loaded) {
            $leftOperand = 'as_array';
            $rightOperand = true;
            $operator = new Operator('is', 'php');
            $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
            $p_constraints[] = $constraint;
            $leftOperand = 'active_only';
            $rightOperand = true;
            $operator = new Operator('is', 'php');
            $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
            $p_constraints[] = $constraint;
            $leftOperand = 'text_only';
            $rightOperand = false;
            $operator = new Operator('is', 'php');
            $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
            $p_constraints[] = $constraint;
            $leftOperand = 'language';
            $rightOperand = $p_languageId;
            $operator = new Operator('is', 'php');
            $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
            $p_constraints[] = $constraint;
            $leftOperand = 'constrained';
            $rightOperand = true;
            $operator = new Operator('is', 'php');
            $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
            $p_constraints[] = $constraint;
            $poi_count = 0;
            $points = array();
            $point_objs = Geo_MapLocation::GetListExt($p_constraints, (array) null, $p_offset, $p_limit, $poi_count, false, $points);
        } else {
            $points = $p_constraints;
        }
        $f_language_id = $p_languageId;
        $map_suffix = '_' . 'multimap' . '_' . $f_language_id . '_' . $p_rank;
        $cnf_html_dir = $Campsite['HTML_DIR'];
        $cnf_website_url = $Campsite['WEBSITE_URL'];
        $geo_map_usage = Geo_Map::ReadMultiMapInfo();
        if (0 < $p_mapWidth) {
            $geo_map_usage['width'] = $p_mapWidth;
        }
        if (0 < $p_mapHeight) {
            $geo_map_usage['height'] = $p_mapHeight;
        }
        $geo_map_usage_json = '';
        $geo_map_usage_json .= json_encode($geo_map_usage);
        $geo_map_info = Geo_Preferences::GetMapInfo($cnf_html_dir, $cnf_website_url, $geo_map_usage['prov']);
        $geo_map_incl = Geo_Preferences::PrepareMapIncludes($geo_map_info['incl_obj']);
        $geo_map_incl_async_arr = $geo_map_info['incl_obj_async'];
        $geo_map_incl_async_init = $geo_map_info['incl_gv3_init'];
        $tag_string_gv3_async = $geo_map_info['incl_gv3'];
        $geo_map_json = '';
        $geo_map_json .= json_encode($geo_map_info['json_obj']);
        $geo_icons_info = Geo_Preferences::GetIconsInfo($cnf_html_dir, $cnf_website_url);
        $geo_icons_json = '';
        $geo_icons_json .= json_encode($geo_icons_info['json_obj']);
        $geo_popups_info = Geo_Preferences::GetPopupsInfo($cnf_html_dir, $cnf_website_url);
        $geo_popups_json = '';
        $geo_popups_json .= json_encode($geo_popups_info['json_obj']);
        $geo_focus_info = Geo_Preferences::GetFocusInfo($cnf_html_dir, $cnf_website_url);
        $geo_focus_info['json_obj']['auto_focus'] = true;
        if (null !== $max_zoom) {
            $geo_focus_info['json_obj']['max_zoom'] = $max_zoom;
        }
        if (null !== $map_margin) {
            $geo_focus_info['json_obj']['border'] = $map_margin;
        }
        $geo_focus_json = '';
        $geo_focus_json .= json_encode($geo_focus_info['json_obj']);
        $preview = true;
        $poi_info = array('pois' => $points, 'map' => $geo_map_usage);
        $poi_info_json = json_encode($poi_info);
        $geocodingdir = $Campsite['WEBSITE_URL'] . '/js/geocoding/';
        // map-provider specific includes shall be taken for all maps, since those maps can use different map providers
        $tag_string_top .= $geo_map_incl;
        $tag_string_top .= "\n";
        $check_gv3 = 'false';
        if ($tag_string_gv3_async) {
            $check_gv3 = 'true';
        }
        $check_gv3_init = 'false';
        if ('' != $geo_map_incl_async_init) {
            $check_gv3_init = 'true';
        }
        $include_files_tags = '';
        if (true) {
            $include_files = Geo_Preferences::GetIncludeCSS($cnf_html_dir, $cnf_website_url);
            $include_files_css = $include_files['css_files'];
            foreach ($include_files_css as $css_file) {
                $include_files_tags .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$css_file}\" />\n";
            }
        }
        $tag_string_ini .= $include_files_tags;
        if (true) {
            $tag_string_ini .= '

    <script type="text/javascript" src="' . $Campsite['WEBSITE_URL'] . '/js/geocoding/map_popups.js"></script>
    <script type="text/javascript" src="' . $Campsite['WEBSITE_URL'] . '/js/geocoding/openlayers/OpenLayers.js"></script>
    <script type="text/javascript" src="' . $Campsite['WEBSITE_URL'] . '/js/geocoding/openlayers/OLlocals.js"></script>
    <script type="text/javascript" src="' . $Campsite['WEBSITE_URL'] . '/js/geocoding/map_preview.js"></script>

';
        }
        $tag_string_mid .= '

<script type="text/javascript">
    window.map_prepared = false;

';
        if ('' != $geo_map_incl_async_init) {
            $tag_string_mid .= '
if (undefined === window.' . $geo_map_incl_async_init . ') {
    window.' . $geo_map_incl_async_init . ' = function () {
        window.gv3_maps_loaded = true;
    };
}
';
        }
        $tag_string_mid .= '

    geo_object' . $map_suffix . ' = new geo_locations();

window.center_large_map' . $map_suffix . ' = function () {
    try {
        if (window.map_win_popup && window.map_win_popup.map_prepared) {
            if ("' . $map_suffix . '" == window.map_win_popup.map_obj_specifier) {
                window.map_win_popup.geo_object' . $map_suffix . '.map_showview();
            }
        }
    } catch (e) {}
};

window.point_large_map_center' . $map_suffix . ' = function (index, select) {
    try {
        if (window.map_win_popup && window.map_win_popup.map_prepared) {
            if ("' . $map_suffix . '" == window.map_win_popup.map_obj_specifier) {
                window.map_win_popup.geo_object' . $map_suffix . '.center_poi(index);
                if (select) {
                    window.map_win_popup.OpenLayers.HooksPopups.on_map_feature_select(window.map_win_popup.geo_object' . $map_suffix . ', index);
                }
            }
        }
    } catch (e) {}
};

window.geo_on_load_proc_check_async_map' . $map_suffix . ' = function()
{

    var async_loaded = true;
    if (' . $check_gv3 . ') {
        var loaded_gv3 = false;
        if ((undefined !== window.google) && (undefined !== window.google.maps) && (undefined !== window.google.maps.event)) {
            loaded_gv3 = true;
        }

        if (' . $check_gv3_init . ') {
            if ((undefined === window.gv3_maps_loaded) || (!window.gv3_maps_loaded)) {
                loaded_gv3 = false;
            }
        }

        if (!loaded_gv3) {async_loaded = false;}
    }

    if (0 < window.count_to_async_load' . $map_suffix . ') {
        async_loaded = false;
    }

    if (async_loaded) {
        setTimeout("geo_on_load_proc_phase2_map' . $map_suffix . '();", 250);
        return;
    }

    setTimeout("geo_on_load_proc_check_async_map' . $map_suffix . '();", 250);

}

var geo_on_load_proc_map' . $map_suffix . ' = function()
{

    var map_obj = document.getElementById ? document.getElementById("geo_map_mapcanvas' . $map_suffix . '") : null;
    if (map_obj)
    {
        if (typeof(window.map_popup_win) == "undefined") {
            map_obj.style.width = "' . $geo_map_usage['width'] . ($width_dyn ? '%' : 'px') . '";
            map_obj.style.height = "' . $geo_map_usage['height'] . ($height_dyn ? '%' : 'px') . '";
        } else {
            // not setting the map size for the large map
        }
';
        $dyn_size_params = array();
        if ($width_dyn) {
            $dyn_size_params['width'] = $geo_map_usage['width'];
        }
        if ($height_dyn) {
            $dyn_size_params['height'] = $geo_map_usage['height'];
        }
        if (0 < count($dyn_size_params)) {
            $tag_string_mid .= '
        if (typeof(window.map_popup_win) == "undefined") {
            geo_object' . $map_suffix . '.set_size_percentage(' . json_encode($dyn_size_params) . ');
            setInterval("geo_object' . $map_suffix . '.try_size_updated();", 1000);
        }
        ';
        }
        $article_spec_arr = array('language_id' => $f_language_id, 'article_number' => 0);
        $article_spec = json_encode($article_spec_arr);
        $local_strings = array();
        $translator = \Zend_Registry::get('container')->getService('translator');
        $local_strings['articles'] = $translator->trans('Articles');
        $local_strings_json = json_encode($local_strings);
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_article_spec({$article_spec});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_auto_focus({$geo_focus_json});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_map_info({$geo_map_json});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_map_usage({$geo_map_usage_json});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_icons_info({$geo_icons_json});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_popups_info({$geo_popups_json});";
        $tag_string_mid .= "\n";
        $tag_string_mid .= "geo_object{$map_suffix}.set_display_strings({$local_strings_json});";
        $tag_string_mid .= "\n";
        if ($area_points) {
            $tag_string_mid .= "geo_object{$map_suffix}.set_area_constraints({$area_points}, {\"empty_only\":{$area_points_empty_only}});";
            $tag_string_mid .= "\n";
        }
        if ($large_map_on_click) {
            $tag_string_mid .= "if (typeof(window.map_popup_win) == \"undefined\") {\n";
            $tag_string_mid .= "    geo_object{$map_suffix}.set_action_subst(function(params) {";
            $tag_string_mid .= "        " . self::GetMultiMapTagOpen($p_languageId, $p_rank, "open_form") . "(params);\n";
            $tag_string_mid .= "    });\n";
            $tag_string_mid .= "}\n";
            $tag_string_mid .= "\n";
        }
        $tag_string_mid .= "if (typeof(window.map_popup_win) != \"undefined\") {\n";
        $tag_string_mid .= "    geo_object{$map_suffix}.set_map_large({width:{$width_large_map},height:{$height_large_map},map_holder:\"map_body_holder\"});\n";
        $tag_string_mid .= "}\n";
        $tag_string_mid .= "\n";
        $tag_string_mid .= '

        if (true && (typeof(window.map_popup_win) != "undefined")) {
';
        $tag_async_load_bunch = '';
        $count_to_async_load = 0;
        foreach ($geo_map_incl_async_arr as $one_async_scr) {
            if (!empty($one_async_scr)) {
                $count_to_async_load += 1;
                $tag_async_load_bunch .= '$.getScript("' . $one_async_scr . '", function() {window.count_to_async_load' . $map_suffix . ' -= 1;});';
            }
        }
        $tag_string_mid .= '
            window.count_to_async_load' . $map_suffix . ' = ' . $count_to_async_load . ';
            window.gv3_maps_loaded = false;

            ' . $tag_async_load_bunch . '

            if (true) {
                setTimeout("geo_on_load_proc_check_async_map' . $map_suffix . '();", 250);
                return;
            }
        }

        setTimeout("geo_on_load_proc_phase2_map' . $map_suffix . '();", 250);
        return;
    }
};

var geo_on_load_proc_phase2_map' . $map_suffix . ' = function()
{
        var res_state = false;
        try {
            res_state = OpenLayers.Util.test_ready();
        } catch (e) {res_state = false;}

        if (!res_state)
        {
            setTimeout("geo_on_load_proc_phase2_map' . $map_suffix . '();", 250);
            return;
        }

        geo_object' . $map_suffix . '.main_openlayers_init("geo_map_mapcanvas' . $map_suffix . '");
        geo_object' . $map_suffix . '.got_load_data(' . $poi_info_json . ', true);

        window.map_prepared = true;

        if (undefined !== window.deferred_action) {
            try {window.deferred_action();} catch (e) {}
        }
};

    $(document).ready(function()
    {
        setTimeout("geo_on_load_proc_map' . $map_suffix . '();", 0);
    });
</script>
';
        // should we provide js for large-map openning
        if ($open_large_map) {
            $tag_string_fin .= self::GetLargeMapOpener($map_suffix, $width_large_map, $height_large_map, $label_large_map, $tag_string_ini . $tag_string_mid, self::GetMultiMapTagBody($p_languageId, $p_rank, true));
        }
        $tag_string .= $tag_string_top;
        if ($load_common) {
            $tag_string .= $tag_string_ini;
        }
        return $tag_string . $tag_string_mid . $tag_string_fin;
    }

Usage Example

Пример #1
0
/**
 * Campsite Map function plugin
 *
 * Type:     function
 * Name:     map
 * Purpose:  Render a geo map
 *
 * @param array
 *     $p_params List of parameters from template
 * @param object
 *     $p_smarty Smarty template object
 *
 * @return
 *     string The html content
 */
function smarty_function_map($p_params, &$p_smarty)
{
    // the strings are translated via Geo_Preferences::TemplateGeoStrings()
    // if you change some of the strings, put them there too
    $translator = \Zend_Registry::get('container')->getService('translator');
    // Default text for the reset link
    define('DEFAULT_RESET_TEXT', $translator->trans('Show original map', array(), 'api'));
    define('DEFAULT_OPEN_TEXT', $translator->trans('Open large map', array(), 'api'));
    // get the context variable
    $campsite = $p_smarty->getTemplateVars('gimme');
    $html = '';
    $map_common_header_set = $campsite->map_common_header_set;
    $map_load_common_header = !$map_common_header_set;
    // get show locations list parameter
    $showLocationsList = FALSE;
    if (isset($p_params['show_locations_list'])) {
        if (is_string($p_params['show_locations_list'])) {
            if (strtolower(trim((string) $p_params['show_locations_list'])) == 'true') {
                $showLocationsList = TRUE;
            }
        }
        if (is_bool($p_params['show_locations_list'])) {
            if ($p_params['show_locations_list']) {
                $showLocationsList = TRUE;
            }
        }
    }
    // get show reset link parameter
    $showResetLink = TRUE;
    $resetLinkText = DEFAULT_RESET_TEXT;
    if (isset($p_params['show_reset_link'])) {
        $resetLinkText_param = trim((string) $p_params['show_reset_link']);
        if ('1' != $resetLinkText_param && '0' != $resetLinkText_param) {
            $resetLinkText = $resetLinkText_param;
        }
        if (strtolower($resetLinkText_param) == 'false') {
            $showResetLink = FALSE;
        }
        if (empty($p_params['show_reset_link'])) {
            $showResetLink = FALSE;
        }
    }
    if (strtolower($resetLinkText) == 'true') {
        $resetLinkText = DEFAULT_RESET_TEXT;
    }
    // get show open link parameter
    $showOpenLink = TRUE;
    $openLinkText = DEFAULT_OPEN_TEXT;
    if (isset($p_params['show_open_link'])) {
        $openLinkText_param = trim((string) $p_params['show_open_link']);
        if ('1' != $openLinkText_param && '0' != $openLinkText_param) {
            $openLinkText = $openLinkText_param;
        }
        if (strtolower($openLinkText) == 'false') {
            $showOpenLink = FALSE;
        }
        if (empty($p_params['show_open_link'])) {
            $showOpenLink = FALSE;
        }
    }
    if (strtolower($openLinkText) == 'true') {
        $openLinkText = DEFAULT_OPEN_TEXT;
    }
    // should be the map a simple one, with opening the large map on any click
    $openMapOnClick = false;
    if (isset($p_params['open_map_on_click'])) {
        $openMapOnClick_param = strtolower(trim((string) $p_params['open_map_on_click']));
        if ('false' != $openMapOnClick_param && '0' != $openMapOnClick_param && !empty($p_params['open_map_on_click'])) {
            $openMapOnClick = true;
        }
    }
    // get map width and height
    $width_dyn = false;
    $height_dyn = false;
    $width = 0;
    $height = 0;
    if (isset($p_params['width'])) {
        $param_width = strtolower(trim((string) $p_params['width']));
        $param_width_arr = explode('%', $param_width);
        if (1 < count($param_width_arr)) {
            $width_dyn = true;
            $width = (int) $param_width_arr[0];
            if (100 < $width) {
                $width = 100;
            }
        } else {
            $width = (int) $p_params['width'];
        }
        if (0 > $width) {
            $width = 0;
        }
    }
    if (isset($p_params['height'])) {
        $param_height = strtolower(trim((string) $p_params['height']));
        $param_height_arr = explode('%', $param_height);
        if (1 < count($param_height_arr)) {
            $height_dyn = true;
            $height = (int) $param_height_arr[0];
            if (100 < $height) {
                $height = 100;
            }
        } else {
            $height = (int) $p_params['height'];
        }
        if (0 > $height) {
            $height = 0;
        }
    }
    $width_large = isset($p_params['popup_width']) ? (int) $p_params['popup_width'] : 800;
    $height_large = isset($p_params['popup_height']) ? (int) $p_params['popup_height'] : 600;
    $max_zoom = isset($p_params['max_zoom']) ? (int) $p_params['max_zoom'] : null;
    $map_margin = isset($p_params['map_margin']) ? (int) $p_params['map_margin'] : null;
    $area_show = isset($p_params['area_show']) ? (string) $p_params['area_show'] : null;
    // if we shall display a multi-map
    if (!is_null($campsite->map_dynamic_points_raw) || !is_null($campsite->map_dynamic_constraints)) {
        // language must be set in context
        if (!$campsite->language->defined) {
            return;
        }
        $offset = 0;
        $limit = $campsite->map_dynamic_max_points;
        if (!$limit) {
            $limit = 2000;
        }
        $multi_map_rank = $campsite->map_dynamic_id_counter;
        $map_language = (int) $campsite->language->number;
        $multi_map_part = "<!-- Begin Map //-->\n";
        $multi_map_body = '';
        $multi_map_header = '';
        $multi_poi_list = '';
        $multi_map_points = $campsite->map_dynamic_points_raw;
        $multi_map_label = $campsite->map_dynamic_map_label;
        $multi_options = array();
        $multi_options['max_zoom'] = $max_zoom;
        $multi_options['map_margin'] = $map_margin;
        $multi_options['load_common'] = $map_load_common_header;
        $multi_options['pois_retrieved'] = false;
        $multi_options['width_dyn'] = $width_dyn;
        $multi_options['height_dyn'] = $height_dyn;
        $multi_options['large_map_on_click'] = $openMapOnClick;
        $multi_options['large_map_open'] = $showOpenLink;
        $multi_options['large_map_width'] = $width_large;
        $multi_options['large_map_height'] = $height_large;
        $multi_options['large_map_label'] = $multi_map_label;
        if ($campsite->map_dynamic_areas) {
            if ('focus' == strtolower($area_show)) {
                $multi_options['area_points'] = $campsite->map_dynamic_areas;
            }
            if ('focus_empty' == strtolower($area_show)) {
                $multi_options['area_points'] = $campsite->map_dynamic_areas;
                $multi_options['area_points_empty_only'] = true;
            }
        }
        if ($multi_map_points) {
            $multi_options['pois_retrieved'] = true;
            $multi_map_header = Geo_Map::GetMultiMapTagHeader($map_language, $multi_map_points, $multi_options, $offset, $limit, $width, $height, $multi_map_rank);
            $multi_poi_list = Geo_Map::GetMultiMapTagList($map_language, $multi_map_points, $multi_options, $multi_map_label, $offset, $limit, $multi_map_rank);
        } else {
            $multi_map_constraints = $campsite->map_dynamic_constraints;
            $multi_map_header = Geo_Map::GetMultiMapTagHeader($map_language, $multi_map_constraints, $multi_options, $offset, $limit, $width, $height, $multi_map_rank);
            $multi_poi_list = Geo_Map::GetMultiMapTagList($map_language, $multi_map_constraints, $multi_options, $multi_map_label, $offset, $limit, $multi_map_rank);
        }
        $multi_map_center = Geo_Map::GetMultiMapTagCenter($map_language, $multi_map_rank);
        $multi_map_open = Geo_Map::GetMultiMapTagOpen($map_language, $multi_map_rank);
        $multi_map_div = Geo_Map::GetMultiMapTagBody($map_language, $multi_map_rank);
        $multi_map_body .= '
        <div class="geomap_container">';
        if ($showLocationsList == TRUE) {
            $multi_map_body .= '
                <div class="geomap_locations">
                    ' . $multi_poi_list . '
                </div>';
        }
        if ($showResetLink == TRUE) {
            $multi_map_body .= '
                <div class="geomap_menu">
                    <a href="#" onClick="' . $multi_map_center . 'return false;">' . camp_javascriptspecialchars($resetLinkText) . '</a>
                </div>';
        }
        if ($showOpenLink == TRUE) {
            $multi_map_body .= '
                <div class="geomap_open_large_map">
                    <a href="#" onClick="' . $multi_map_open . 'return false;">' . camp_javascriptspecialchars($openLinkText) . '</a>
                </div>';
        }
        $multi_map_body .= '
            <div class="geomap_map">
                ' . $multi_map_div . '
            </div>
        </div>
        <div style="clear:both" ></div>
        <!--End Map //-->
';
        $multi_map_part .= $multi_map_header . $multi_map_body;
        $campsite->map_common_header_set = true;
        return $multi_map_part;
    }
    // the end of the multi-map part; the article map is processed below
    // language and article must be set in context
    if (!$campsite->language->defined || !$campsite->article->defined) {
        return;
    }
    // do nothing if article does not have a map
    if ($campsite->article->has_map == FALSE) {
        return;
    }
    // get article and language from context
    $article = (int) $campsite->article->number;
    $language = (int) $campsite->language->number;
    $auto_focus = isset($p_params['auto_focus']) ? (bool) $p_params['auto_focus'] : null;
    // get core pieces to display the map
    $map_options = array();
    $map_options['auto_focus'] = $auto_focus;
    $map_options['max_zoom'] = $max_zoom;
    $map_options['map_margin'] = $map_margin;
    $map_options['load_common'] = $map_load_common_header;
    $map_options['width_dyn'] = $width_dyn;
    $map_options['height_dyn'] = $height_dyn;
    $map_options['large_map_on_click'] = $openMapOnClick;
    $map_options['large_map_open'] = $showOpenLink;
    $map_options['large_map_width'] = $width_large;
    $map_options['large_map_height'] = $height_large;
    $mapHeader = MetaMap::GetMapTagHeader($article, $language, $width, $height, $map_options);
    $mapMain = MetaMap::GetMapTagBody($article, $language);
    // build javascript code
    $html = '
        <!-- Begin Map //-->' . $mapHeader . '
        <div class="geomap_container">';
    if ($showLocationsList == TRUE) {
        $local = array('map' => $translator->trans('Map', array(), 'api'), 'center' => $translator->trans('Center', array(), 'api'));
        $mapLocationsList = MetaMap::GetMapTagList($article, $language, $local);
        $html .= '
            <div class="geomap_locations">' . $mapLocationsList . '
            </div>';
    }
    if ($showResetLink == TRUE) {
        $mapResetLink = MetaMap::GetMapTagCenter($article, $language);
        $html .= '
            <div class="geomap_menu">
                <a href="#" onClick="' . $mapResetLink . '
                 return false;">' . camp_javascriptspecialchars($resetLinkText) . '</a>
            </div>';
    }
    if ($showOpenLink == TRUE) {
        $mapOpenLink = Geo_Map::GetMapTagOpen($article, $language);
        $html .= '
            <div class="geomap_open_large_map">
                <a href="#" onClick="' . $mapOpenLink . 'return false;">' . camp_javascriptspecialchars($openLinkText) . '</a>
            </div>';
    }
    $html .= '
            <div class="geomap_map">' . $mapMain . '
            </div>
        </div>
        <div style="clear:both" ></div>
        <!--End Map //-->
    ';
    $campsite->map_common_header_set = true;
    return $html;
}