/** * get a url that will zoom us out one level from this gridsquare * @access public */ function getGridSquareToken($gridsquare) { if (is_numeric($gridsquare)) { $id = $gridsquare; $gridsquare = new GridSquare(); $gridsquare->loadFromId($id); } $out = new GeographMapMosaic(); //start with same params $out->setScale(40); $out->setMosaicFactor(2); $out->setCentre($gridsquare->x, $gridsquare->y, true); //true to align to 10x10 map return $out->getToken(); }
$cacheid = 'maplarge|' . $token; //regenerate? if (!$smarty->is_cached($template, $cacheid)) { dieUnderHighLoad(); //assign overview to smarty if ($mosaic->type_or_user > 0) { $overview->type_or_user = $mosaic->type_or_user; $profile = new GeographUser($mosaic->type_or_user); $smarty->assign('realname', $profile->realname); $smarty->assign('user_id', $mosaic->type_or_user); } if ($mosaic->pixels_per_km >= 40) { //largeoverview $overview->setScale(1); list($x, $y) = $mosaic->getCentre(); $overview->setCentre($x, $y); //does call setAlignedOrigin } $overview->assignToSmarty($smarty, 'overview'); $smarty->assign('marker', $overview->getBoundingBox($mosaic)); //assign main map to smarty $mosaic->assignToSmarty($smarty, 'mosaic'); //assign all the other useful stuff $gridref = $mosaic->getGridRef(-1, -1); $smarty->assign('gridref', $gridref); $smarty->assign('mapwidth', round($mosaic->image_w / $mosaic->pixels_per_km)); preg_match("/([A-Z]+\\d)5(\\d)5\$/", $gridref, $matches); $smarty->assign('gridref2', $matches[1] . $matches[2]); if ($mosaic->pixels_per_km >= 40) { $left = $mosaic->map_x; $bottom = $mosaic->map_y;
$smarty->assign('map_token', $mosaic->getGridSquareToken($square)); } } } } else { //no square specifed - populate with remembered values $smarty->assign('gridsquare', $_SESSION['gridsquare']); $smarty->assign('eastings', $_SESSION['eastings']); $smarty->assign('northings', $_SESSION['northings']); } if (!isset($_GET['inner'])) { #//lets find some recent photos #new RecentImageList($smarty); //lets add an overview map too if ($grid_ok) { $overview = new GeographMapMosaic('largeoverview'); $overview->setCentre($square->x, $square->y); //does call setAlignedOrigin $smarty->assign('marker', $overview->getSquarePoint($square)); //TODO if centisquare is specified use that to plot a circle! //lets add an rastermap too $rastermap = new RasterMap($square, false, $square->natspecified); $rastermap->addLatLong($lat, $long); $smarty->assign_by_ref('rastermap', $rastermap); } else { $overview = new GeographMapMosaic('overview'); } $overview->assignToSmarty($smarty, 'overview'); } #} $smarty->display($template, $cacheid);
function assignToSmarty($smarty) { global $CONF; $taken = $this->getFormattedTakenDate(); //get the grid references $this->getSubjectGridref(true); $this->getPhotographerGridref(true); //remove grid reference from title $this->bigtitle = trim(preg_replace("/^{$this->grid_reference}/", '', $this->title)); $this->bigtitle = preg_replace('/(?<![\\.])\\.$/', '', $this->bigtitle); $rid = $this->grid_square->reference_index; $gridrefpref = $CONF['gridrefname'][$rid]; $smarty->assign('page_title', $this->bigtitle . ":: {$gridrefpref}{$this->grid_reference}"); $smarty->assign('image_taken', $taken); $smarty->assign('ismoderator', $ismoderator); $smarty->assign_by_ref('image', $this); //get a token to show a suroudding geograph map $mosaic = new GeographMapMosaic(); $smarty->assign('map_token', $mosaic->getGridSquareToken($this->grid_square)); //find a possible place within 25km $place = $this->grid_square->findNearestPlace(75000); $smarty->assign_by_ref('place', $place); if (empty($this->comment)) { $smarty->assign('meta_description', "{$this->grid_reference} :: {$this->bigtitle}, " . strip_tags(smarty_function_place(array('place' => $place)))); } else { $smarty->assign('meta_description', $this->comment); } if (!empty($CONF['forums'])) { //let's find posts in the gridref discussion forum $this->grid_square->assignDiscussionToSmarty($smarty); } //count the number of photos in this square $smarty->assign('square_count', $this->grid_square->imagecount); //lets add an overview map too $overview = new GeographMapMosaic('largeoverview'); $overview->setCentre($this->grid_square->x, $this->grid_square->y); //does call setAlignedOrigin $overview->assignToSmarty($smarty, 'overview'); $smarty->assign('marker', $overview->getSquarePoint($this->grid_square)); require_once 'geograph/conversions.class.php'; $conv = new Conversions(); list($lat, $long) = $conv->gridsquare_to_wgs84($this->grid_square); $smarty->assign('lat', $lat); $smarty->assign('long', $long); list($latdm, $longdm) = $conv->wgs84_to_friendly($lat, $long); $smarty->assign('latdm', $latdm); $smarty->assign('longdm', $longdm); //lets add an rastermap too $rastermap = new RasterMap($this->grid_square, false); $rastermap->addLatLong($lat, $long); if (!empty($this->viewpoint_northings)) { $rastermap->addViewpoint($this->viewpoint_refindex, $this->viewpoint_eastings, $this->viewpoint_northings, $this->viewpoint_grlen, $this->view_direction); } elseif (isset($this->view_direction) && strlen($this->view_direction) && $this->view_direction != -1) { $rastermap->addViewDirection($this->view_direction); } $smarty->assign_by_ref('rastermap', $rastermap); $smarty->assign('x', $this->grid_square->x); $smarty->assign('y', $this->grid_square->y); if ($this->view_direction > -1) { $smarty->assign('view_direction', $this->view_direction % 90 == 0 ? strtoupper(heading_string($this->view_direction)) : ucwords(heading_string($this->view_direction))); } $level = $this->grid_square->imagecount > 1 ? 6 : 5; $smarty->assign('sitemap', getSitemapFilepath($level, $this->grid_square)); }