/** * 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; } }
/** * Output the google map * * @param string $text text for the "toggle" link that shows/hides the map. Set empty to omit * @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 "colrobox" * @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; if (is_null($obj)) { if (is_null($_zp_current_image)) { $obj = $_zp_current_album; } else { $obj = $_zp_current_image; } } if (is_null($obj)) { $MAP_OBJECT = NULL; 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_OBJECT = new GoogleMapAPI($type . $typeid); $MAP_OBJECT->_minify_js = defined('RELEASE'); $MAP_OBJECT->setZoomLevel(getOption('gmap_zoom')); $MAP_OBJECT->setWidth(getOption('gmap_width')); $MAP_OBJECT->setHeight(getOption('gmap_height')); $MAP_OBJECT->setMapType(getOption('gmap_starting_map')); $mapcontrol = getOption('gmap_control'); if ($mapcontrol == 'none') { $MAP_OBJECT->disableTypeControls(); } else { $MAP_OBJECT->enableMapControls(); $MAP_OBJECT->setTypeControlsStyle($mapcontrol); $MAP_OBJECT->setControlSize(getOption('gmap_control_size')); $mapsallowed = array(); if (getOption('gmap_map')) { $mapsallowed[] = 'ROADMAP'; } if (getOption('gmap_hybrid')) { $mapsallowed[] = 'HYBRID'; } if (getOption('gmap_satellite')) { $mapsallowed[] = 'SATELLITE'; } if (getOption('gmap_terrain')) { $mapsallowed[] = 'TERRAIN'; } $MAP_OBJECT->setTypeControlTypes($mapsallowed); } switch ($type) { case 'images': if (getImageGeodata($obj, $MAP_OBJECT)) { break; } $MAP_OBJECT = NULL; return false; case 'albums': if (getAlbumGeodata($obj, $MAP_OBJECT)) { break; } $MAP_OBJECT = NULL; return false; default: break; } $type = $type . $typeid . '_'; if (is_null($id)) { $id = $type . 'googlemap'; } $id_toggle = $id . '_toggle'; $id_data = $id . '_data'; if (!is_null($callback)) { call_user_func($callback, $MAP_OBJECT); } echo $MAP_OBJECT->getMapJS(); switch ($hide) { case 'colorbox': $w = str_replace('px', '', $MAP_OBJECT->width) + 20; $h = str_replace('px', '', $MAP_OBJECT->height) + 20; if (function_exists('bzcompress')) { $method = 'bzip2'; $data = bzcompress(serialize($MAP_OBJECT)); } else { $method = 'gzip'; $data = gzcompress(serialize($MAP_OBJECT)); } $param = base64_encode($data); ?> <a href="javascript:<?php echo $id_data; ?> Colorbox();" title="<?php echo $text; ?> " class="google_map"> <?php echo $text; ?> </a> <div id="<?php echo $id_data; ?> " class="hidden_map"> <div id="<?php echo $id_data; ?> _map"> <?php echo $MAP_OBJECT->printOnLoad(); echo $MAP_OBJECT->printMap(); ?> </div> </div> <script type="text/javascript"> // <!-- <![CDATA[ function <?php echo $id_data; ?> Colorbox() { $('#<?php echo $id_data; ?> ').removeClass('hidden_map'); $.colorbox({href:"#<?php echo $id_data; ?> _map", inline:true, open:true}); $('#<?php echo $id_data; ?> ').addClass('hidden_map'); } $(document).ready(function(){ $("#<?php echo $id_data; ?> _map").colorbox({iframe:true, innerWidth:'<?php echo $w; ?> px', innerHeight:'<?php echo $h; ?> px'}); }); // ]]> --> </script> <?php break; case 'hide': ?> <script type="text/javascript"> // <!-- <![CDATA[ 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_OBJECT->printOnLoad(); echo $MAP_OBJECT->printMap(); ?> </div> <?php break; case 'show': ?> <a id="<?php echo $id_toggle; ?> " href="javascript:toggleMap('<?php echo $id_data; ?> ');" title="<?php echo gettext('Display or hide the Google Map.'); ?> "> <?php echo $text; ?> </a> <div id="<?php echo $id_data; ?> "> <?php echo $MAP_OBJECT->printOnLoad(); echo $MAP_OBJECT->printMap(); ?> </div> <?php break; } }