<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://localhost/OpenLayers-2.10/OpenLayers.js"></script>
<script type="text/javascript">
var map = null;
// ベクタレイヤー
var vectorLayer = null;
// 初期化処理
function init(){
map = new OpenLayers.Map("map");
// 背景となるWMSレイヤーを作成
var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'});
// 描画用レイヤーを作成
vectorLayer = new OpenLayers.Layer.Vector("Polygon Layer");
// Mapにレイヤーを追加
map.addLayers([wmsLayer, vectorLayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
// ポリゴン描画用のコントロールを作成してMapに追加
var ctrls = {
"draw": new OpenLayers.Control.DrawFeature(vectorLayer, OpenLayers.Handler.Polygon),
"modify": new OpenLayers.Control.ModifyFeature(vectorLayer)
}
for(var key in ctrls){
map.addControl(ctrls[key]);
ctrls[key].activate();
}
map.setCenter(new OpenLayers.LonLat(0,0), 3);
}
// ベクタ情報を出力する
function writeFeatures(){
// 選択されているフォーマット名を取得
var type = document.getElementById("selFormat").value;
// 選択されている形式にあわせてOpenLayers.Formatを作成
var format = null;
switch(type){
case "WKT":
format = new OpenLayers.Format.WKT();
break;
case "KML":
format = new OpenLayers.Format.KML();
break;
case "GML":
format = new OpenLayers.Format.GML();
break;
case "GeoJSON":
format = new OpenLayers.Format.GeoJSON();
break;
}
// ベクタレイヤーの持つベクタ情報をOpenLayers.Formatを利用して出力
var res = format.write(vectorLayer.features);
document.getElementById("result").value = res;
}
</script>
</head>
<body onload="init()">
<div id="map" style="width:500px;height:300px;float:left"></div>
<select id="selFormat">
<option value="WKT">WKT</option>
<option value="KML">KML</option>
<option value="GML">GML</option>
<option value="GeoJSON">GeoJSON</option>
</select>
<input type="button" onclick="writeFeatures()" value="ベクタ出力" />
<span style="clear:all"/>
<textarea id="result" rows="15" cols="50"></textarea>
</body>
</html>