コード例 #1
0
ファイル: googleMap.php プロジェクト: ariep/ZenPhoto20-DEV
/**
 * Output the google map
 *
 * @param string $text text for the "toggle" link that shows/hides the map. Set empty to omit (then Map is always displayed)
 * @param string $id used to set the IDs for the toggle href element ($id_toggle) and the map element ($id_data)
 * @param string $hide initial map state: "hide", "show", or "colorbox"
 * @param object $obj optional image/album object. Pass string for generic map and use callback to set points
 * @param function $callback optional callback function to set map options.
 */
function printGoogleMap($text = NULL, $id = NULL, $hide = NULL, $obj = NULL, $callback = NULL)
{
    global $_zp_current_album, $_zp_current_image, $_x, $_y, $_z, $_n;
    /* controls of parameters */
    if (is_null($obj)) {
        if (is_null($_zp_current_image)) {
            $obj = $_zp_current_album;
        } else {
            $obj = $_zp_current_image;
        }
    }
    if (is_null($obj)) {
        return false;
    }
    if (is_object($obj)) {
        $type = $obj->table;
        $typeid = $obj->getID();
    } else {
        $type = $obj;
        $typeid = '';
    }
    if (is_null($text)) {
        $text = gettext('Google Map');
    }
    if (empty($text)) {
        $hide = 'show';
    }
    if (is_null($hide)) {
        $hide = getOption('gmap_display');
    }
    if (!is_string($hide)) {
        if ($hide) {
            $hide = 'hide';
        } else {
            $hide = 'show';
        }
    }
    /* map configuration */
    $mapControls = getOption('gmap_control_type');
    if ($mapControls == 'none') {
        $mapTypeControl = false;
    } else {
        $mapTypeControl = true;
        $map_control_type = $mapControls;
        $allowedMapTypes = array();
        if (getOption('gmap_map_hybrid')) {
            $allowedMapTypes[] = 'HYBRID';
        }
        if (getOption('gmap_map_roadmap')) {
            $allowedMapTypes[] = 'ROADMAP';
        }
        if (getOption('gmap_map_satellite')) {
            $allowedMapTypes[] = 'SATELLITE';
        }
        if (getOption('gmap_map_terrain')) {
            $allowedMapTypes[] = 'TERRAIN';
        }
    }
    $config['center'] = '0, 0';
    $config['zoom'] = 'auto';
    $config['cluster'] = true;
    $config['zoomControlStyle'] = getOption('gmap_zoom_size');
    if ($mapTypeControl) {
        $config['map_type'] = getOption('gmap_starting_map');
        $config['map_types_available'] = $allowedMapTypes;
    } else {
        $config['disableMapTypeControl'] = true;
    }
    $config['map_width'] = getOption('gmap_width') . "px";
    $config['map_height'] = getOption('gmap_height') . "px";
    $config['clusterMaxZoom'] = getOption('gmap_cluster_max_zoom');
    $config['clusterAverageCenter'] = true;
    $config['onclick'] = "iw.close();";
    $config['minifyJS'] = !TEST_RELEASE;
    $map = new Googlemaps($config);
    /* add markers from geocoded pictures */
    switch ($type) {
        case 'images':
            if (getImageGeodata($obj, $map)) {
                break;
            } else {
                $map = NULL;
                return false;
            }
        case 'albums':
            if (getAlbumGeodata($obj, $map)) {
                break;
            } else {
                $map = NULL;
                return false;
            }
        default:
            break;
    }
    if ($_n == 1) {
        $map->zoom = 13;
    }
    if ($_n) {
        $_x = $_x / $_n;
        $_y = $_y / $_n;
        $_z = $_z / $_n;
        $lon = number_format(atan2($_y, $_x) * 180 / M_PI, 12, '.', '');
        $hyp = sqrt($_x * $_x + $_y * $_y);
        $lat = number_format(atan2($_z, $hyp) * 180 / M_PI, 12, '.', '');
        $map->center = $lat . ', ' . $lon;
    }
    if (!is_null($callback)) {
        call_user_func($callback, $map);
    }
    /* map display */
    if (is_null($id)) {
        $id = $type . $typeid . '_googlemap';
    }
    $id_toggle = $id . '_toggle';
    $id_data = $id . '_data';
    switch ($hide) {
        case 'show':
            $map->create_map();
            ?>
			<script type="text/javascript">
				//<![CDATA[
			<?php 
            echo $map->output_js_contents;
            echo omsAdditions();
            ?>

				function image(album, image) {
					window.location = '<?php 
            echo WEBPATH;
            ?>
/index.php?album=' + album + '&image=' + image;
				}
				//]]>
			</script>
			<div id="<?php 
            echo $id_data;
            ?>
">
				<?php 
            echo $map->output_html;
            ?>
			</div>
			<?php 
            break;
        case 'hide':
            $map->create_map();
            ?>
			<script type="text/javascript">
				//<![CDATA[
			<?php 
            echo $map->output_js_contents;
            echo omsAdditions();
            ?>

				function image(album, image) {
					window.location = '<?php 
            echo WEBPATH;
            ?>
/index.php?album=' + album + '&image=' + image;
				}

				function toggle_<?php 
            echo $id_data;
            ?>
() {
					if ($('#<?php 
            echo $id_data;
            ?>
').hasClass('hidden_map')) {
						$('#<?php 
            echo $id_data;
            ?>
').removeClass('hidden_map');
					} else {
						$('#<?php 
            echo $id_data;
            ?>
').addClass('hidden_map');
					}
				}
				//]]>
			</script>
			<a id="<?php 
            echo $id_toggle;
            ?>
" href="javascript:toggle_<?php 
            echo $id_data;
            ?>
();" title="<?php 
            echo gettext('Display or hide the Google Map.');
            ?>
">
				<?php 
            echo $text;
            ?>
			</a>
			<div id="<?php 
            echo $id_data;
            ?>
" class="hidden_map">
				<?php 
            echo $map->output_html;
            ?>
			</div>
			<?php 
            break;
        case 'colorbox':
            if (zp_has_filter('theme_head', 'colorbox::css')) {
                $map->create_map();
                $map_data["output_js_contents"] = $map->output_js_contents;
                $map_data["output_html"] = $map->output_html;
                if (getOption('gmap_sessions')) {
                    $param = '';
                    $_SESSION['GoogleMapVars'] = $map_data;
                } else {
                    $serializedData = serialize($map_data);
                    if (function_exists('bzcompress')) {
                        $data = bzcompress($serializedData);
                    } else {
                        $data = gzcompress($serializedData);
                    }
                    $param = '?map_data=' . base64_encode($data);
                }
                ?>
				<a href="<?php 
                echo WEBPATH . '/' . ZENFOLDER . '/' . PLUGIN_FOLDER . '/googleMap/map.php' . $param;
                ?>
" title="<?php 
                echo $text;
                ?>
" class="google_map">
					<?php 
                echo $text;
                ?>
				</a>
				<script type="text/javascript">
					//<![CDATA[
					$(document).ready(function () {
						$(".google_map").colorbox({
							iframe: true,
							innerWidth: '<?php 
                echo (int) (getOption('gmap_width') + 20);
                ?>
px',
							innerHeight: '<?php 
                echo (int) ($cbox_h = getOption('gmap_height') + 20);
                ?>
px',
							close: '<?php 
                echo gettext("close");
                ?>
'
						});
					});
					//]]>
				</script>
				<?php 
            }
            break;
    }
}
コード例 #2
0
ファイル: Map.php プロジェクト: rb26/zenphoto
    $config['map_width'] = getOption('gmap_width') . "px";
    $config['map_height'] = getOption('gmap_height') . "px";
    $config['clusterMaxZoom'] = getOption('gmap_cluster_max_zoom');
    $config['clusterAverageCenter'] = true;
    $config['onclick'] = "iw.close();";
    $config['minifyJS'] = true;
    $map = new Googlemaps($config);
    $map->output_js_contents = $map_data["output_js_contents"];
    $map->output_html = $map_data["output_html"];
    ?>
			<div class="googlemap">
				<script type="text/javascript">
					//<![CDATA[
	<?php 
    echo $map->output_js_contents;
    echo omsAdditions();
    ?>

					function image(album, image) {
						window.parent.location = '<?php 
    echo WEBPATH;
    ?>
/index.php?album=' + album + '&image=' + image;
					}
					//]]>
				</script>
				<div id=googlemap_data">
					<?php 
    echo $map->output_html;
    ?>
				</div>