Web アプリケーションでのプロキシの使用
このセクションでは、Web アプリケーションでプロキシを使用する方法について説明します。
ria.js をインポートする
最初の手順は、OpenLayers とメインの JavaScript API ライブラリをインポートすることです。これを行うには、次の手順を実行します。
<script type="text/javascript" src="http://<server>:<port>/ria/openlayers/OpenLayers.js"></script>
<script type="text/javascript" src="http://<server>:<port>/ria/ria.js"></script>
localhost:8080 を、JavaScript API をインストールする実際のホスト名とポート番号で置き換えます。
Web アプリケーションにおいて JavaScript API コンポーネントを公開するには、ダウンロードするすべての javascript リソースが一般アクセス可能な URL になければなりません (また、これらの js ファイル内の URL もすべて、一般アクセス可能でなければなりません)。
プロキシへのパスを定義する
クロスドメイン呼び出しをプロキシ経由でルーティングするように指示するには、プロキシへのパスを次のように登録する必要があります。
ria.RestService.addProxy("/riaproxy/?url=");
JavaScript ライブラリ コードは、別のドメインへの URL を直接呼び出すのではなく、上で登録されたパスの末尾にエンコーディングされた URL を追加し、その結果を使用してリクエストを実行します。プロキシは、要求パラメータ (デフォルトでは url) から URL を取得し、URL に関連付けられたリソースを要求して、結果を変更することなく JavaScript ライブラリ コードに返送します。addProxy() メソッドに渡される完全なパスは、使用するプロキシ、およびプロキシの展開方法によって異なります。
コード サンプル
フィーチャ検索を実行するための簡単なページは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<script src="http://<server>:<port>/ria/openlayers/OpenLayers.js"></script>
<script src="http://<server>:<port>/ria/ria.js"></script>
</head>
<body>
<button onclick="search();">Search</button>
<script>
ria.RestService.addProxy("/riaproxy/?url=");
function search() {
var fs = new ria.search.FeatureService(
"http://<server>:<port>/rest/Spatial/FeatureService");
var d = fs.searchNearest({
table: "/Samples/NamedTables/WorldcapTable",
geometry: new OpenLayers.Geometry.Point(12.875977, 47.813155),
srs: "epsg:4326",
attributes: ["Capital"],
withinDistance: "2000 mi",
distanceAttributeName: "dist",
maxFeatures: 10
});
d.addCallback(function(result) {alert(result.features.length + " result(s)")});
}
</script>
</body>
</html
このサンプル Web アプリケーションをブラウザに表示し、[検索] をクリックすることによって、テストします。
フィーチャー検索結果を表示するダイアログが表示されます。
Fiddler などの Web デバッガで、10 件の検索結果の一覧を参照できます。
{"type":"FeatureCollection","Metadata":[{"type":"String","name":"Capital"},
{"type":"Double","name":"dist"}],"features":[{"type":"Feature","properties"
:{"Capital":"Ljubljana","dist":143.84489998699985}},{"type":"Feature","properties"
:{"Capital":"Vienna","dist":161.4848812627603}},{"type":"Feature","properties"
:{"Capital":"Vaduz","dist":163.332701859974}},{"type":"Feature","properties"
:{"Capital":"Prague","dist":173.87473824107374}},{"type":"Feature","properties"
:{"Capital":"Bratislava","dist":198.09553406882614}},{"type":"Feature","properties"
:{"Capital":"Zagreb","dist":201.31855154101802}},{"type":"Feature","properties"
:{"Capital":"Bern","dist":260.92616074609}},{"type":"Feature","properties"
:{"Capital":"San Marino","dist":267.4791030110629}},{"type":"Feature","properties"
:{"Capital":"Budapest","dist":290.00905102083885}},{"type":"Feature","properties"
:{"Capital":"Berlin","dist":325.56576583498344}}]}