2009年11月1日日曜日

OpenLayers 22a Flickr の画像を表示1 - Fixed Strategy

OpenLayers_workshop.pdf を参考に、Flickr のジオタグのついた画像を表示します。

HTML ファイルを新規作成します。
「openlayersTokyoproj」 を右クリックして 新規 -> HTML ファイル をクリック。
「HTML ファイル」ウィンドウの「ファイル名(任意:openlayers_s_bbox.html)」に入力して「完了」ボタンをクリック。
「charset」を「utf-8」にします。
「examples」の「strategy-bbox.html」の内容をコピーして新規作成したファイルに貼り付けます。

http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=4750b8cf0a0683b86dba5b084b0cb061&bbox=139.23,35.42,139.4,35.71&tags='昭和記念公園'

次の様にコードを修正します。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- 追加 -->
<title>OpenLayers21 Strategy BBOX - Flickr</title> <!-- 追加 -->
<!-- ライブラリと CSS などのリンク -->
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" /> <!-- href の修正 -->
<link rel="stylesheet" href="./examples/style.css" type="text/css" /> <!-- href の修正 -->
<script src="./lib/OpenLayers.js"></script> <!-- src の修正 -->
<!-- ここから Proj4js 追加 -->
<script type="text/javascript" src="./lib/proj4js/lib/proj4js-compressed.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/projCode/tmerc.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/defs/EPSG2456.js"></script>
<!-- ここまで -->
<script type="text/javascript">
var map, layer1, layer2;
OpenLayers.ProxyHost = (window.location.host == "localhost") ?
"/cgi-bin/proxy.cgi?url=" : "proxy.cgi?url=";

// ここからベースレイヤの変更
        
function init() {
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000)
});

layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
format: 'image/png'
});

layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});

map.addLayers([layer1, layer2]);

map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());

if (!map.getCenter()) {
map.zoomToMaxExtent()
};
// ここまで

var style = new OpenLayers.Style({
externalGraphic: "${img_url}",
pointRadius: 30
});
---

OpenLayers_workshop.pdf の Loading Vector Data (Slide26) を参考に画像を描画します。
ここには、Flicker は API で style 情報とともに KML フィードを提供するので、Fixed strategy の使用が適当である、とありました。

(上記コードの続き)
---
var trigpoints = new OpenLayers.Layer.Vector("Flickr Trigpoint Photos", {
protocol: new OpenLayers.Protocol.HTTP({
url: "http://api.flickr.com/services/feeds/geo/?id=[user_id]&lang=en-us&format=kml&page=1", //オプションの "g=" を "id=" にする
format: new OpenLayers.Format.KML({extractStyles: true})
}),
strategies: [new OpenLayers.Strategy.Fixed()],
projection: new OpenLayers.Projection("EPSG:4326")
});
map.addLayer(trigpoints);

}

</script>
</head>
<body onload="init()">
<h1 id="title">BBOX Strategy - flickr</h1>
<p id="shortdesc">
Uses a BBOX strategy to request features within a bounding box.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>
The BBOX strategy requests data within a bounding box. When the<br />
previously requested data bounds are invalidated (by browsing to<br />
some area not covered by those bounds), another request for data<br />
is issued.
</p>
</div>
</body>
</html>

/usr/cgi-bin/proxy.cgi に api.flickr.com を追加します。

# Designed to prevent Open Proxy type stuff.

allowedHosts = ['www.openlayers.org', 'openlayers.org',
'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org',
'sigma.openplans.org', 'demo.opengeo.org',
'www.openstreetmap.org', 'sample.avencia.com',
'maps.google.co.jp', 'picasaweb.google.com',
'picasaweb.google.co.jp', 'api.flickr.com']


画像をクリックしてもポップアップは表示されませんでした。

0 件のコメント: