Пример #1
0
 /**
  * Render the requested map.
  *
  * @since 1.4
  * @uses do_action() geo_mashup_render_map Customize things (like scripts and styles) before the template is loaded. The mashup script (google v2 or mxn) is sent as a parameter.
  */
 public static function render_map()
 {
     self::enqueue_styles();
     $map_data = self::get_map_data();
     if (empty($map_data)) {
         status_header(500);
         _e('WordPress transients may not be working. Try deactivating or reconfiguring caching plugins.', 'GeoMashup');
         echo ' <a href="https://code.google.com/p/wordpress-geo-mashup/issues/detail?id=425" target="_top">issue 425</a>';
         exit;
     }
     self::extract_template_properties($map_data);
     self::enqueue_scripts($map_data);
     self::add_term_properties($map_data);
     // Store the properties for use by the template tag GeoMashupRenderMap::map_script
     self::$map_data = json_encode($map_data);
     // Load the template
     status_header(200);
     load_template(GeoMashup::locate_template('map-frame'));
 }
Пример #2
0
 /**
  * Process an iframe map request.
  *
  * @since 1.3
  * @uses render-map.php
  */
 private static function render_map()
 {
     require_once 'render-map.php';
     GeoMashupRenderMap::render_map();
     exit;
 }
 /**
  * Queue custom script for the results map.
  */
 public static function action_geo_mashup_render_map()
 {
     if ('search-results-map' == GeoMashupRenderMap::map_property('name')) {
         // Custom javascript for optional use in template
         GeoMashup::register_script('geo-mashup-search-results', 'js/search-results.js', array('geo-mashup'), GEO_MASHUP_VERSION, true);
         GeoMashupRenderMap::enqueue_script('geo-mashup-search-results');
     }
 }
Пример #4
0
?>

		<style type="text/css">
			v\:* { behavior:url(#default#VML); }
			#geo-mashup {
				width:<?php 
echo GeoMashupRenderMap::map_property('width');
?>
;
				height:<?php 
echo GeoMashupRenderMap::map_property('height');
?>
;
			}
		</style>
	</head>
	<body>
	<div id="geo-mashup">
		<noscript>
			<p><?php 
_e('This map requires JavaScript. You may have to enable it in your settings.', 'GeoMashup');
?>
</p>
		</noscript>
	</div>
	<?php 
echo GeoMashupRenderMap::map_script('geo-mashup');
?>
	</body>
</html>
Пример #5
0
 /**
  * Render the requested map.
  *
  * @since 1.4
  */
 public static function render_map()
 {
     global $geo_mashup_options, $geo_mashup_custom;
     // Include theme stylesheet if requested
     if ($geo_mashup_options->get('overall', 'theme_stylesheet_with_maps') == 'true') {
         wp_enqueue_style('theme-style', get_stylesheet_uri());
         self::enqueue_style('theme-style');
     }
     // Resolve map style
     $style_file_path = path_join(get_stylesheet_directory(), 'map-style.css');
     $style_url_path = '';
     if (is_readable($style_file_path)) {
         $style_url_path = path_join(get_stylesheet_directory_uri(), 'map-style.css');
     } else {
         if (isset($geo_mashup_custom)) {
             $style_url_path = $geo_mashup_custom->file_url('map-style.css');
         }
     }
     if (empty($style_url_path)) {
         GeoMashup::register_style('geo-mashup-map-style', 'css/map-style-default.css');
     } else {
         wp_register_style('geo-mashup-map-style', $style_url_path);
     }
     wp_enqueue_style('geo-mashup-map-style');
     self::enqueue_style('geo-mashup-map-style');
     if (isset($_GET['map_data_key'])) {
         // Map data is cached in a transient
         $map_data = get_transient('gmm' . $_GET['map_data_key']);
         if (!$map_data) {
             $map_parameters = get_transient('gmp' . $_GET['map_data_key']);
             if ($map_parameters) {
                 $map_data = GeoMashup::build_map_data($map_parameters);
             } else {
                 $map_data = GeoMashup::build_map_data('');
             }
         }
     } else {
         // Try building map data from the query string
         $map_data = GeoMashup::build_map_data($_GET);
     }
     // Queue scripts
     $mashup_dependencies = array('jquery');
     $language_code = GeoMashup::get_language_code();
     if ('google' == $map_data['map_api']) {
         // Google v2 base
         $google_2_url = 'http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=' . $geo_mashup_options->get('overall', 'google_key');
         if (!empty($language_code)) {
             $google_2_url .= '&amp;hl=' . $language_code;
         }
         wp_register_script('google-maps-2', $google_2_url, '', '', true);
         $mashup_dependencies[] = 'google-maps-2';
         $mashup_script = 'geo-mashup-google';
         if (!empty($map_data['cluster_max_zoom'])) {
             // Queue clustering scripts
             if ('clustermarker' == $map_data['cluster_lib']) {
                 GeoMashup::register_script('mapiconmaker', 'js/mapiconmaker.js', array('google-maps-2'), '1.1', true);
                 GeoMashup::register_script('clustermarker', 'js/ClusterMarker.js', array('mapiconmaker'), '1.3.2', true);
                 $mashup_dependencies[] = 'clustermarker';
             } else {
                 $map_data['cluster_lib'] = 'markerclusterer';
                 GeoMashup::register_script('markerclusterer', 'js/markerclusterer.js', array('google-maps-2', 'geo-mashup-google'), '1.0', true);
                 wp_enqueue_script('markerclusterer');
                 self::enqueue_script('markerclusterer');
             }
         }
     } else {
         // Mapstraction base
         $mashup_script = 'geo-mashup-mxn';
         GeoMashup::register_script('mxn', 'js/mxn/mxn.js', null, GEO_MASHUP_VERSION, true);
         GeoMashup::register_script('mxn-core', 'js/mxn/mxn.core.js', array('mxn'), GEO_MASHUP_VERSION, true);
     }
     // Mapstraction providers
     if ('openlayers' == $map_data['map_api']) {
         wp_register_script('openlayers', 'http://openlayers.org/api/OpenLayers.js', null, 'latest', true);
         wp_register_script('openstreetmap', 'http://www.openstreetmap.org/openlayers/OpenStreetMap.js', array('openlayers'), 'latest', true);
         GeoMashup::register_script('mxn-openlayers', 'js/mxn/mxn.openlayers.core.js', array('mxn-core', 'openstreetmap'), GEO_MASHUP_VERSION, true);
         GeoMashup::register_script('mxn-openlayers-gm', 'js/mxn/mxn.openlayers.geo-mashup.js', array('mxn-openlayers'), GEO_MASHUP_VERSION, true);
         $mashup_dependencies[] = 'mxn-openlayers-gm';
     } else {
         if ('googlev3' == $map_data['map_api']) {
             $google_3_url = 'http://maps.google.com/maps/api/js?sensor=false';
             if (!empty($language_code)) {
                 $google_3_url .= '&amp;language=' . $language_code;
             }
             wp_register_script('google-maps-3', $google_3_url, '', '', true);
             GeoMashup::register_script('mxn-googlev3', 'js/mxn/mxn.googlev3.core.js', array('mxn-core', 'google-maps-3'), GEO_MASHUP_VERSION, true);
             $mashup_dependencies[] = 'mxn-googlev3';
         }
     }
     // Geo Mashup scripts
     GeoMashup::register_script('geo-mashup', 'js/geo-mashup.js', $mashup_dependencies, GEO_MASHUP_VERSION, true);
     GeoMashup::register_script($mashup_script, 'js/' . $mashup_script . '.js', array('geo-mashup'), GEO_MASHUP_VERSION, true);
     wp_enqueue_script($mashup_script);
     self::enqueue_script($mashup_script);
     // Custom javascript
     $custom_js_url_path = '';
     if (isset($geo_mashup_custom)) {
         $custom_js_url_path = $geo_mashup_custom->file_url('custom-' . $map_data['map_api'] . '.js');
         if (!$custom_js_url_path and 'google' != $map_data['map_api']) {
             $custom_js_url_path = $geo_mashup_custom->file_url('custom-mxn.js');
         }
         if (!$custom_js_url_path) {
             $custom_js_url_path = $geo_mashup_custom->file_url('custom.js');
         }
     } else {
         if (is_readable('custom.js')) {
             $custom_js_url_path = path_join(GEO_MASHUP_URL_PATH, 'custom.js');
         }
     }
     if (!empty($custom_js_url_path)) {
         wp_enqueue_script('geo-mashup-custom', $custom_js_url_path, array($mashup_script));
         self::enqueue_script('geo-mashup-custom');
     }
     // Set height and width properties for the template
     $width = $map_data['width'];
     if (substr($width, -1) != '%') {
         $width .= 'px';
     }
     unset($map_data['width']);
     self::map_property('width', $width);
     $height = $map_data['height'];
     if (substr($height, -1) != '%') {
         $height .= 'px';
     }
     unset($map_data['height']);
     self::map_property('height', $height);
     if (isset($map_data['object_data']) and is_array($map_data['object_data'])) {
         $map_data['object_data'] = json_encode($map_data['object_data']);
     }
     array_walk($map_data, array('GeoMashupRenderMap', 'add_double_quotes'));
     if ('single' == $map_data['map_content']) {
         $category_opts = '{}';
     } else {
         $categories = get_categories(array('hide_empty' => false));
         $category_opts = '{';
         if (is_array($categories)) {
             $cat_comma = '';
             $category_color = $geo_mashup_options->get('global_map', 'category_color');
             $category_line_zoom = $geo_mashup_options->get('global_map', 'category_line_zoom');
             foreach ($categories as $category) {
                 $category_opts .= $cat_comma . '"' . $category->term_id . '":{"name":"' . esc_js($category->name) . '"';
                 $parent_id = '';
                 if (!empty($category->parent)) {
                     $parent_id = $category->parent;
                 }
                 $category_opts .= ',"parent_id":"' . $parent_id . '"';
                 if (!empty($category_color[$category->slug])) {
                     $category_opts .= ',"color_name":"' . $category_color[$category->slug] . '"';
                 }
                 if (!empty($category_line_zoom[$category->slug])) {
                     $category_opts .= ',"max_line_zoom":"' . $category_line_zoom[$category->slug] . '"';
                 }
                 $category_opts .= '}';
                 $cat_comma = ',';
             }
         }
         $category_opts .= '}';
     }
     $map_data['category_opts'] = $category_opts;
     // Store the properties for use by the template tag GeoMashupRenderMap::map_script
     self::$map_data = $map_data;
     // Load the template
     status_header(200);
     load_template(GeoMashup::locate_template('map-frame'));
 }