File "index_OLD20130418.php"
Full path: /www/ansys/qgis/000_nasu/Backup/OLD/index_OLD20130418.php
File size: 14.38 KiB (14725 bytes)
MIME-type: text/xml
Charset: utf-8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Refresh" content="30 ;URL=index.php?flag=<?php $flag ?>">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta equiv="expires" content="0">
<title>OpenLayers Example</title>
<meta http-equiv="imagetoolbar" content="no"> <!--ie image gizmo OFF!-->
<style type="text/css">
#map {
width: 752px;
height: 552px;
border: 1px solid black;
}
h1 {
font-family: Utopia,Arial, Helvetica, sans-serif;
font-size: 28px;
line-height: 32px;
color: #005599;
}
#features {
margin-top: 5px;
font-size: small;
}
table, table td, table th {
border: 1px solid #DDD;
border-collapse: collapse;
margin: 0;
text-align: center;
padding: 1px 3px;
}
table th {
background-color: #EEE;
font-weight: bold;
}
</style>
<?php
//
// Loading the map file
//
//データベース接続
$HOST = "192.168.100.153";
$DB = "ansys";
$USER = "postgres";
$PASS = "am#71ZJ*";
$conn = pg_connect("
host = ". $HOST. "
dbname = ". $DB. "
user = ". $USER. "
password= ". $PASS. "
") or die("接続エラー" .$HOST ."--" .$DB ."--" .$USER ."--" .$PASS .pg_last_error());
$sql = "SELECT * FROM qgis.ts_terminal ORDER BY regdatetime;";
$res = pg_query($conn,$sql) or die (pg_last_error() ."<BR>" .$sql ."<BR>");
$Ct = pg_num_rows($res);
for($ii = 0;$ii < $Ct;$ii++)
{
$row = pg_fetch_array($res,$ii);
$lat[$ii] = $row['lat'];
$lon[$ii] = $row['lon'];
$w_status[$ii] = $row['work_status'];
$t_name[$ii] = $row['terminal_name'];
//print "lat = ". $lat[$ii] ."<BR>";
//print "lon = ". $lon[$ii] ."<BR>";
}
$lat_php = join(",",$lat);
$lon_php = join(",",$lon);
$w_status_php = join(",",$w_status);
$t_name_php = join(",",$t_name);
$jct = 0;
// print $t_name_php ."<BR>";
// print $lon_php ."<BR>";
// print $jct ."<BR>";
// print $Ct ."<BR>";
?>
<script src="./OpenLayers.js"></script>
<script type="text/javascript">
<!--
function init(){
var dct = <?php echo $Ct; ?>;
var j = 0;
var Lat = new Array(10);
var Lon = new Array(10);
//$ar[] = $a[name]; // (1) DBデータを配列に格納
//$v_php = join(“,”,$ar); // (2) 配列をカンマ区切りデータにする
//JavaScript側
var lat_js = "<?php echo $lat_php ?>"; // (3) PHP変数をJavaScript変数に代入
var lon_js = "<?php echo $lon_php ?>"; // (3) PHP変数をJavaScript変数に代入
var ws_js = "<?php echo $w_status_php ?>"; // (3) PHP変数をJavaScript変数に代入
var t_name_js = "<?php echo $t_name_php ?>"; // (3) PHP変数をJavaScript変数に代入
var Lat = lat_js.split(","); // (4) カンマ区切りデータを配列に格納
var Lon = lon_js.split(","); // (4) カンマ区切りデータを配列に格納
var Ws = ws_js.split(","); // (4) カンマ区切りデータを配列に格納
var Tn = t_name_js.split(","); // (4) カンマ区切りデータを配列に格納
//document.write("AAA" + lat_js);
var options = {
'projection':"EPSG:4326",
scales : [3000,100000,50000,25000,12500],
'controls':[],
'minZoomLevel': 1,
'numZoomLevels':5
};
var map = new OpenLayers.Map('map',options);
var landsat = new OpenLayers.Layer.WMS(
"OnEarth",
"http://hyperquad.telascience.org/cgi-bin/onearth", {
layers: "OnEarth"
}, {
isBaseLayer: true,
buffer: 0,
visibility: false,
tileSize: new OpenLayers.Size(512, 512),
opacity: 1.0
}
);
//map.addLayer(landsat);
var host = location.protocol + "//" + location.hostname;
if (location.port != "") {
host += ":" + location.port;
}
var msLayer = new OpenLayers.Layer.WMS(
"WMSレイヤー",
host + "/cgi-bin/mapserv-i18n?map=/www/ansys/qgis/000_nasu/map/mapfiles/wms.map&",
{layers: ['road'],transparent: true, format: 'image/gif'} ,
{isBaseLayer: true, singleTile: true, opacity:0.7}
);
// document.write(host+ "/cgi-bin/mapserv-i18n?map=../html/mapserver-extensions/mapfiles/wms.map&");
map.addLayer(msLayer);
///////////////////////////////////////////////
// 図の基本プロパティ
var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
layer_style.fillOpacity = 0.2; // 内側の透明度
layer_style.graphicOpacity = 1; // 図全体の透明度
/*
// Green style このスタイル(緑)を使ったときのプロパティ
var style_1 = {
strokeColor: "#00FF00",
strokeWidth: 3, // 外周の太さ
pointRadius: 6, // 半径
pointerEvents: "visiblePainted" // この意味は調査中
};
// Green style このスタイル(緑)を使ったときのプロパティ
var style_1 = OpenLayers.Util.extend({}, layer_style);
style_1.strokeColor = "red"; // 外周の色
style_1.fillColor = "red"; // 内側の色
style_1.fontSize = 10; // 文字のサイズ
*/
var v_f=1;
//var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {style: layer_style});
var vectorLayer = new Array(10);
var style = new Array(50);
for(j = 0;j < dct;j++)
{
//styleの定義
style[j] = OpenLayers.Util.extend({}, layer_style);
style[j].label = Tn[j];
style[j].fontSize = 10; // 文字のサイズ
style[j].labelAlign = "left";
style[j].labelXOffset = 10;
style[j].labelYOffset = 10;
vectorLayer[j] = new OpenLayers.Layer.Vector(Tn[j], {style: layer_style,visibility:v_f,label:"Test",fontColor:"#00FFFF",fontSize: "12px",fontFamily: "Arial"});
// create a point feature 2つの点の位置とプロパティ
var point = new OpenLayers.Geometry.Point(Lon[j], Lat[j]);
point.transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
);
//work_statusによって色を変更
if(Ws[j] == 0)
{
style[j].strokeColor = "red"; // 外周の色
style[j].fillColor = "red"; // 内側の色
}
else if(Ws[j] == 1)
{
style[j].strokeColor = "green"; // 外周の色
style[j].fillColor = "red"; // 内側の色
}
else if(Ws[j] == 2)
{
style[j].strokeColor = "blue"; // 外周の色
style[j].fillColor = "red"; // 内側の色
}
else if(Ws[j]== 3)
{
style[j].strokeColor = "pink"; // 外周の色
style[j].fillColor = "red"; // 内側の色
}
var pointFeature = new OpenLayers.Feature.Vector(point,null,style[j]);
// レイヤの追加と描画する図の指定
map.addLayer(vectorLayer[j]);
vectorLayer[j].addFeatures(pointFeature);
}
/*
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
var marker = new OpenLayers.Marker(
new OpenLayers.LonLat(139.941, 36.881)
.transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")
)
);
markers.addMarker(marker);
var size = new OpenLayers.Size(32, 32);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('img/van.png', size, offset);
var marker = new OpenLayers.Marker(
new OpenLayers.LonLat(139.941, 36.881)
.transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")
),
icon
);
markers.addMarker(marker);
*/
/*
// 点のプロパティ
var style_point = {
strokeColor: "#FF6347",
fillColor: "#FF6347",
fillOpacity: 0.2, // 内側の透明度
strokeWidth: 4, // 外周の太さ
pointRadius: 10 // 半径
};
var vectorLayer = new OpenLayers.Layer.Vector("描画テスト", {style: layer_style});
// 点の座標を決める
var point = new OpenLayers.Geometry.Point(139.941, 36.881);
// 座標を変換 ※この処理が新たに必要だった
point.transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
);
// 点を生成
var pointFeature = new OpenLayers.Feature.Vector(point, null, style_point);
// レイヤの追加と描画する図の指定
map.addLayer(vectorLayer);
vectorLayer.addFeatures([pointFeature]);
*/
///////////////////////////////////////////////
var styles = new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
strokeColor: "#FF0000",
strokeWidth: 10,
strokeOpacity: 0.5
})
});
highlightLayer = new OpenLayers.Layer.Vector("選択道路", { styleMap: styles });
map.addLayer(highlightLayer);
control = new OpenLayers.Control.GetFeature({
protocol: OpenLayers.Protocol.WFS.fromWMSLayer(msLayer, {
featurePrefix: "ms",
maxFeatures: 3,
formatOptions: {
xy: false
}
}),
single: false
});
control.events.register("featuresselected", this, function(evt){
highlightLayer.destroyFeatures();
showInfo(evt.features);
// 地図の中心を取得
var center = map.getCenter();
//document.write(center.lon);
// 地図座標に変換
center.transform(new OpenLayers.Projection("EPSG:4326"));
document.sample.boxLon.value = center.lon;
document.sample.boxLat.value = center.lat;
if (evt.features && evt.features.length > 0) {
highlightLayer.addFeatures(evt.features);
highlightLayer.redraw();
}
});
control.events.register("clickout", this, function(evt){
highlightLayer.destroyFeatures();
showInfo(null);
});
map.addControl(control);
control.activate();
map.setCenter(new OpenLayers.LonLat(139.944,36.908),3);
//map.events.register('move',this, handleMapMove);
map.addControl(new OpenLayers.Control.PanZoomBar());
map.addControl(new OpenLayers.Control.MouseDefaults());
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
//map.addControl(new OpenLayers.Control.OverviewMap());
//map.addControl(new OpenLayers.Control.ZoomPanel());
// Mapにmoveイベントを登録し、初期表示のためにイベント起動
//map.events.register('move', map, handleMapMove);
//map.events.triggerEvent('move');
//右クリックでブラウザのデフォルトのメニューが開かないようにする
document.getElementById('map').oncontextmenu = function(e){
e = e?e:window.event;
if(e.preventDefault) {
e.preventDefault(); // For non-IE browsers.
}else{
return false; // For IE browsers.
}
}
var center = map.getCenter();
//document.write(center);
}
var attributes = ["gid", "id", "namae", "joutai", "yuryo", "syubetsu", "kokubango", "fukuin", "hashi", "tonneru", "yukiooi"];
function showInfo(features) {
if (features == null || features.length == 0) {
document.getElementById("attributes").style.display = "none";
document.getElementById("message").style.display = "block";
return;
}
document.getElementById("attributes").style.display = "block";
document.getElementById("message").style.display = "none";
var table = document.getElementById("attributes");
while (table.childNodes.length > 2) {
table.removeChild(table.lastChild);
}
for (var i = 0, len = features.length; i < len; i++) {
var tr = document.createElement("tr");
for (var k = 0; k < attributes.length; k++) {
var td = document.createElement("td");
td.innerHTML = features[i].attributes[attributes[k]];
tr.appendChild(td);
}
table.appendChild(tr);
}
}
// moveイベント
function handleMapMove() {
// 地図の中心を取得
var center = map.getCenter();
//document.write(center.lon);
// 地図座標に変換
center.transform(new OpenLayers.Projection("EPSG:4326"));
document.sample.boxLon.value = center.lon;
document.sample.boxLat.value = center.lat;
}
// -->
</script>
</head>
<body onload="init()">
<center>
<!-- <div id="map" name="map" style="width:700px;height:1000px;"></div>-->
<div id="map" name="map"></div>
<div id="features">
<p id="message" style="display:none">表示するデータがありません。</p>
<table>
<tbody id="attributes" style="display:none">
<tr>
<th>gid</th>
<th>id</th>
<th>名前</th>
<th>状態</th>
<th>有料</th>
<th>種別</th>
<th>国道番号</th>
<th>幅員</th>
<th>橋</th>
<th>トンネル</th>
<th>雪覆い</th>
</tr>
</tbody>
</table>
</div>
</center>
<form name="sample">
<div>経度:<input type="text" name="boxLon" />
緯度:<input type="text" name="boxLat" /></div>
</form>
</body>
</html>