More tweaks to get the map working. At the moment, the clickable area is off because it's not scaled like the actual image is. I'll have to work on that next.
git-svn-id: file:///svn-source/pmgr/branches/initial_20090526/site@34 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -42,7 +42,7 @@ class MapsController extends AppController {
|
||||
* - Produces a PNG site map image
|
||||
*/
|
||||
|
||||
function map($id = null, $requested_width = 600) {
|
||||
function map($id = null, $requested_width = 800) {
|
||||
if (!$id) {
|
||||
$this->Session->setFlash(__('Invalid Item.', true));
|
||||
$this->redirect(array('action'=>'index'));
|
||||
@@ -235,14 +235,14 @@ class MapsController extends AppController {
|
||||
*****/
|
||||
|
||||
// Scale things according to desired display width
|
||||
$screen_adjustment_factor = $requested_width / $info['extents']['right'];;
|
||||
$screen_adjustment_factor = $requested_width / $info['extents']['right'];
|
||||
|
||||
// Define image size
|
||||
$info['width'] = $info['extents']['right'] * $screen_adjustment_factor;
|
||||
$info['depth'] = $info['extents']['bottom'] * $screen_adjustment_factor;
|
||||
|
||||
// Go through each unit, adjusting map locations
|
||||
foreach ($info['units'] AS $unit) {
|
||||
foreach ($info['units'] AS &$unit) {
|
||||
$unit['left'] *= $screen_adjustment_factor;
|
||||
$unit['right'] *= $screen_adjustment_factor;
|
||||
$unit['top'] *= $screen_adjustment_factor;
|
||||
@@ -255,7 +255,6 @@ class MapsController extends AppController {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,24 +1,46 @@
|
||||
<?php /* -*- mode:PHP -*- */ ?>
|
||||
|
||||
<DIV>
|
||||
<?php
|
||||
echo $html->image(array('controller' => 'maps',
|
||||
'action' => 'map',
|
||||
$info['map_id']),
|
||||
array('alt' => 'Site Map',
|
||||
'class' => 'imagemap',
|
||||
'usemap' => '#mapimg'));
|
||||
?>
|
||||
<DIV class="map">
|
||||
<MAP name="mapzones"><?php
|
||||
{// for indentation purposes
|
||||
// Go through each unit, adding a clickable region for the unit
|
||||
foreach ($info['units'] AS $unit){
|
||||
echo(' <area shape="rect"' .
|
||||
' coords="' .
|
||||
$unit['left'] . ',' .
|
||||
$unit['right'] . ',' .
|
||||
$unit['top'] . ',' .
|
||||
$unit['bottom'] .
|
||||
'" href="' .
|
||||
$html->url(array('controller' => 'units',
|
||||
'action' => 'view',
|
||||
$unit['id'])) .
|
||||
'" alt="' .
|
||||
$unit['name'] .
|
||||
'">' . "\n");
|
||||
}
|
||||
}// for indentation purposes
|
||||
?>
|
||||
|
||||
</MAP>
|
||||
<?php
|
||||
echo $html->image(array('controller' => 'maps',
|
||||
'action' => 'map',
|
||||
$info['map_id']),
|
||||
array('alt' => 'Site Map',
|
||||
'class' => 'map',
|
||||
'usemap' => '#mapzones'));
|
||||
?>
|
||||
|
||||
</DIV>
|
||||
|
||||
<DIV>
|
||||
<DIV class="legend">
|
||||
<?php
|
||||
/*
|
||||
$html->image(array('controller' => 'maps',
|
||||
'action' => 'legend',
|
||||
$map['Map']['id']),
|
||||
array('alt' => 'Site Map Legend'));
|
||||
*/
|
||||
echo $html->image(array('controller' => 'maps',
|
||||
'action' => 'legend',
|
||||
$info['map_id']),
|
||||
array('alt' => 'Site Map Legend',
|
||||
'class' => 'map'));
|
||||
?>
|
||||
</DIV>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user