我有一个表,在我的数据库中包含500个点。我想在地图上显示这些点。目前它只显示表格列表顶部的点。
在此代码中,查询显示我拥有/需要的所有点。
<html>
<head><title>Hallo Geoinfo </title></head>
<body>
<?php
$db = pg_connect('host=localhost dbname=gis_db user=user password=user');
$query = "SELECT gid,geoeffnet_,ST_ASGEOJSON(geom) as geom from public.christbaumogd";
$result = pg_query($query);
if(!$result){
echo "Problem wiht query" . $query . "<br/>";
echo pg_last_error();
exit();
}
while($row = pg_fetch_assoc($result)){
echo "ID:". $row['gid'] ."<br/>";
echo "Zone" . $row['geoeffnet_'] ."<br/>";
echo "Geometry" . $row['geom'] ."<br/>";
}
&GT;
</body>
</html>
但是当我尝试使用相同的查询将点放在地图上时,它只显示一个点
<html>
<head>
<title>OpenLayers Demo</title>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<!--<script src="http://localhost:8082/geoserver/openlayers/OpenLayers.js" ></script>-->
<script type="text/javascript">
var map; //representiert die Karte
var startpointlat = 48.21252;//Wien
var startpointlong= 16.37832;//Wien
var startzoom = 3;
var bounds = new OpenLayers.Bounds(
16.1536311, 48.106509,
16.6148645, 48.3433243
);
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 0.00180169296875,
projection: "EPSG:4326",
units: 'degrees'
};
//Karte erstellen
function init() {
map = new OpenLayers.Map("map",options);//name muss mit div id übereinstimmen
var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
map.addLayer(wms);
//database Ergebnis einbinden
var polygons= <?php
$db = pg_connect('host=localhost dbname=gis_db user=user password=user');
$query = "SELECT gid, ST_ASGEOJSON(geom) as geom from public.christbaumogd";
$result = pg_query($query);
if(!$result){
echo "Problem with query" . $query . "<br/>";
echo pg_last_error();
exit();
}
while($row = pg_fetch_assoc($result)){
echo $row['geom'];
break;
}
?>;
var geojson_format= new OpenLayers.Format.GeoJSON();
var vector_layer= new OpenLayers.Layer.Vector();
map.addLayer(vector_layer);
vector_layer.addFeatures(geojson_format.read(polygons));
//database end
// Controls einbinden
map.addControl(new OpenLayers.Control.PanZoomBar({
position: new OpenLayers.Pixel(2, 15)
}));
map.addControl(new OpenLayers.Control.Navigation());
//auf den extent zoomen
var lonLat = new OpenLayers.LonLat(startpointlong,startpointlat);
map.setCenter(lonLat, startzoom);
}
</script>
</head>
<body onload="init();">
<div style="width:100%; height:100%" id="map"></div>
</body>
</html>
提前致谢。
答案 0 :(得分:0)
在while循环中取消休息