Web レイアウトでは、Web ブラウザで表示したときにマップがどのように見えるかが示されます。Infrastructure Studioまたは他のいくつかの方法で、Web レイアウト リソースを編集すると、レイアウトを作成、カスタマイズして、ブラウザでの表示方法や有効にするフィーチャを変更することができます。このセクションでは、ベーシック レイアウト ビューアを使用して Web レイアウトを表示する方法について説明します。
Web レイアウトを表示するには、互換性のある Web ブラウザとビューアが必要です。ビューアは別のソフトウェアをインストールする必要はありません。このビューアは、Internet Explorer、Mozilla Firefox、Google Chrome、AppleSafari など、ほとんどのブラウザで実行できます。
Web レイアウトを表示する最も簡単な方法は、そのリソース識別子を GET パラメータとして、ビューア URL に渡すことです。 たとえば、次では localhost 上で動作する Viewer を使用して web レイアウトを表示します:
http://localhost/mapserver2013/mapviewerajax/? WEBLAYOUT=Library%3a%2f%2fSamples%2fLayouts%2fSample.WebLayout
すべての Infrastructure Map Server サイトでは、ユーザ ID とパスワードによる認証が必要です。認証が成功すると、Infrastructure Map Server は、一意のセッション ID で識別されるセッションを作成します。このセッション ID によって、ビューアとサーバの間で複数の HTTP リクエストの一貫性が維持されます。 その後のサイトへのアクセスでは、ユーザ ID ではなく、セッション ID が必要です。デフォルトで、Viewer は認証自体を処理し、初回ロード時に、ユーザ ID とパスワードの入力を求めます。ただし、Viewer ページをロードする前に、認証した方がよい場合もあります。
よくある例の 1 つが、ビジターに読み取り専用アクセス権のみを与えるサイトです。こうした状況に備えて、既定の Infrastructure Map Server のインストールには、空のパスワードを持つユーザ「Anonymous」が含まれています。
Viewer のロード前に認証を実行するには、<frame> または <iframe> 要素を使用して、Viewer を別のページに埋め込みます。外側のページで、必要な任意の認証を実行し、セッションを作成して、Viewer フレームに Web レイアウトとセッション ID を渡すことができます。
次の例では、ビューアを使用して Web レイアウトを表示します。いくつかの基本的な初期化を実行してセッションを作成し、セッション識別子を使用したビューアのページと Web レイアウトを表示します。
<?php
$installDir =
'C:\Program Files\Autodesk\Autodesk Infrastructure Web Server Extension 2016\\';
$extensionsDir = $installDir . 'WebServerExtensions\www\\';
$viewerDir = $installDir . 'mapviewerphp\\';
include $viewerDir . 'constants.php';
MgInitializeWebTier($extensionsDir . 'webconfig.ini');
$site = new MgSite();
$site->Open(new MgUserInformation("Anonymous", ""));
$sessionId = $site->CreateSession();
$webLayout =
"Library://Samples/Layouts/SamplesPhp.WebLayout";
?>
<html>
<head>
<title>Simple Sample Application</title>
</head>
<body marginheight="0" marginwidth="0">
<iframe id="viewerFrame" width="100%" height="100%" frameborder=0
scrolling="no"
src="/mapserver2012/mapviewerajax/?SESSION=<?= $sessionId ?>&
WEBLAYOUT=<?= $webLayout ?>"></iframe>
</body>
</html>