<?php
require_once('../mappoint/ClassLoader.php');
session_start();
function getMap(ViewByHeightWidth $view, $zoom) {
$global = $_SESSION['mappoint'];
$images = null;
$views = array($view);
$mapSpec = new MapSpecification();
$mapSpec->DataSourceName = "MapPoint.NA";
$mapSpec->Views = $views;
$mapSpec->Options = new MapOptions();
$mapSpec->Options->Format = new ImageFormat();
$mapSpec->Options->ReturnType = MapReturnType::$ReturnUrl;
$mapSpec->Options->Format->Height = 400;
$mapSpec->Options->Format->Width = 400;
$mapSpec->Options->Zoom = $zoom;
try {
$images = $global->RenderService->GetMap($mapSpec);
$view = new ViewByHeightWidth();
$view->CenterPoint = $images[0]->View->ByHeightWidth->CenterPoint;
$view->Height = $images[0]->View->ByHeightWidth->Height;
$view->Width = $images[0]->View->ByHeightWidth->Width;
$_SESSION['view'] = $view;
return $images[0]->Url;
} catch (SoapFault $e) {
die($e->faultstring);
}
}
function pan($x, $y) {
$renderService = $_SESSION['mappoint']->RenderService;
$currentView = $_SESSION['view'];
// Find the new center pixel of the map
$pixels = array();
$pixels[] = new PixelCoord();
$pixels[0]->X = 200 - $x;
$pixels[0]->Y = 200 - $y;
// ConvertToLatLong will return the new center LatLong
$coords = null;
if($currentView != null) {
try {
// Get the corresponding latlong for this new pixel
$coords = $renderService->ConvertToLatLong($pixels, $currentView,
400, 400);
if($coords[0] == null) {
// Display error message.
// Happens if center pixel is an invalid LatLong
// Most likely caused by dragging when zoomed out to
// the point where space is visible
die('Invalid center point');
} else {
// Update the current view
$currentView->CenterPoint = $coords[0];
// Set the current map to the new zoomed map
$_SESSION['image_url'] = getMap($currentView, 1);
}
$_SESSION['view'] = $currentView;
}
catch(SoapFault $e) {
// Display error message on web page
die($e->faultstring);
}
}
}
function zoom($zoom) {
$currentView = $_SESSION['view'];
try {
$_SESSION['image_url'] = getMap($currentView, $zoom);
} catch (SoapFault $e) {
die($e->faultstring);
}
}
if (!isset($_SESSION['image_url'])) {
$global = $_SESSION['mappoint'];
// Display a map of seattle
$currentView = new ViewByHeightWidth();
$currentView->CenterPoint = new LatLong();
$currentView->CenterPoint->Latitude = 47.599803715252847;
$currentView->CenterPoint->Longitude = -122.33455797096831;
$currentView->Height = 43;
$currentView->Width = 57;
$_SESSION['image_url'] = getMap($currentView, 1);
}
if (isset($_POST['Button2'])) {
//Zoom out
zoom(2);
} elseif (isset($_POST['Button1'])) {
//Zoom in
zoom(0.5);
} elseif (isset($_POST['DragX'])) {
//Pan
pan($_POST['DragX'], $_POST['DragY']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Pan Map Navigation</title>
<script language="javascript">
startX = 0;
startY = 0;
lastX = 0;
lastY = 0;
function BeginDrag(e) {
document.all.Panel.style.clip = "rect(0px 406px 406px 0px)";
lastX = startX = e.clientX;
lastY = startY = e.clientY;
}
function Dragging(e) {
dx = e.clientX - lastX;
dy = e.clientY - lastY;
newX = parseInt(document.forms[0].Image1.style.left) + dx;
newY = parseInt(document.forms[0].Image1.style.top) + dy;
document.forms[0].Image1.style.left = newX + "px";
document.forms[0].Image1.style.top = newY + "px";
lastX = e.clientX;
lastY = e.clientY;
}
function EndDrag(e) {
dx = e.clientX - startX;
dy = e.clientY - startY;
document.forms[0].DragX.value = dx;
document.forms[0].DragY.value = dy;
document.forms[0].submit();
}
</script>
</head>
<body>
<div style="font-size: small"><b>Note</b>: The pan feature will only IE.</div>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="DragX" id="DragX" type="hidden" />
<input name="DragY" id="DragY" type="hidden" />
<b> Drag the map to pan.</b>
<div id="Panel" style="border-style: Double; height: 400px; width: 400px; left: 0px; top: 100px; z-index: 100; position: absolute">
<img id="Image1" name="Image1" ondrag="Dragging(event)" ondragstart="BeginDrag(event)" ondragend="EndDrag(event)" src="<?php echo $_SESSION['image_url']; ?>" width="400px" height="400px" border="0" style="left: 0px; top: 0px; z-index: 101; position: absolute" />
</div>
<br />
<table border="0">
<td align="center">
<input type="submit" name="Button2" value="Zoom Out" id="Button2" />
<input type="submit" name="Button1" value="Zoom In" id="Button1" />
</td>
</tr>
</table>
</form>
</body>
</html>
|