Hallo,
ich möchte aus einer MySQL-Datenbank Punkte auslesen(Koordinaten kann ich schon mal auslesen) und anschließend will ich diese Koordinaten nutzen, um diese in einer Karte auszeigen zu lassen.
Da hab ich mir gedacht, dass ich diese Koordinaten gleich in eine Funktion reinpacke, welche dann Punkte konstruiert. Leider funktioniert das nicht und ich als Anfänger bräuchte da mal ein paar Hilfen.
Die entsprechenden Zeilen habe ich der Übersichtlichkeit wegen mal fett geschrieben. Die $x_koord und $y_koord werden korrekt ausgelesen. Und der Punkt, der über der Funktion steht, wird auch konstruiert.
Hoffe jemand kann mir helfen.
GRuss
ich möchte aus einer MySQL-Datenbank Punkte auslesen(Koordinaten kann ich schon mal auslesen) und anschließend will ich diese Koordinaten nutzen, um diese in einer Karte auszeigen zu lassen.
Da hab ich mir gedacht, dass ich diese Koordinaten gleich in eine Funktion reinpacke, welche dann Punkte konstruiert. Leider funktioniert das nicht und ich als Anfänger bräuchte da mal ein paar Hilfen.
Die entsprechenden Zeilen habe ich der Übersichtlichkeit wegen mal fett geschrieben. Die $x_koord und $y_koord werden korrekt ausgelesen. Und der Punkt, der über der Funktion steht, wird auch konstruiert.
Hoffe jemand kann mir helfen.
GRuss
Code:
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<link type="text/css" rel="stylesheet" href="style.css" />
<title>Webforum</title>
<script src = "http://openlayers.org/api/OpenLayers.js"></script>
<script src = "http://openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<script>
// globale Daten:
var map;
var vectors;
var pnr = 1;
function onFeatureSelect( evt ) {
//alert( evt.feature.ID );
// Popup erzeugen:
var html="<p>POI " + evt.feature.ID + "</p>";
var popup =
new OpenLayers.Popup.FramedCloud("featurePopup",evt.feature.geometry.getBounds().getCenterLonLat(), // Anzeigeposition
new OpenLayers.Size(100,100), // Grösse in Pixel
html, // HTML-Code, der im Popup angezeigt
// werden soll
null,
true, // Show close box
null //onPopupClose // Function to be called on closeBox click
);
map.addPopup(popup); // Popup anzeigen
evt.feature.popup = popup; // Merken, damits später wieder gelöscht werden kann
}
function onFeatureUnselect( evt ) {
map.removePopup(evt.feature.popup); // Popup ausblenden
evt.feature.popup.destroy(); // Popup loeschen
evt.feature.popup = null;
}
// initialisierung:
function init() {
map = new OpenLayers.Map("map" );
var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik",{layers: 'basic'});
var layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("Fahrradkarte");
vectors = new OpenLayers.Layer.Vector("Vector Layer");
map.addLayers( [layerCycleMap,mapnik,vectors] );
// Controls definieren:
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
// Point Construction control erzeugen und in map einsetzen:
var pointConstructor = new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.Point);
map.addControl(pointConstructor);
pointConstructor.handler.callbacks.done = function( point ) {
var poiStyle = OpenLayers.Util.extend(
{}, OpenLayers.Feature.Vector.style["default"]);
OpenLayers.Util.extend(
poiStyle, {fillColor: "green", fillOpacity:0.8, pointRadius:15});
/*
//Punkt konstruieren
var pointFeature = new OpenLayers.Feature.Vector(point, null, poiStyle );
vectors.addFeatures( [pointFeature] );
pointFeature.ID = pnr++;
alert( "Punkt eingefügt: (" + point.x + "," + point.y + ")" );
*/
}
// Control aktivieren:
pointConstructor.activate();
// Mouse Hover aktivieren:
var selectControl = new OpenLayers.Control.SelectFeature( vectors, {hover:true});
map.addControl(selectControl);
// Control aktivieren:
selectControl.activate();
vectors.events.on({
'featureselected': onFeatureSelect,
'featureunselected': onFeatureUnselect
});
// Set initial view and scale:
var lon= 1488143.92; // Berliner HBF
var lat= 6895656.55;
var zoom= 5;
var lonLat = new OpenLayers.LonLat(lon, lat);
map.setCenter (lonLat, zoom);
// Einfügen eines POI in den Vektorlayer:
// Construct style for new POIs based on existing default style:
var poiStyle = OpenLayers.Util.extend(
{}, OpenLayers.Feature.Vector.style["default"]);
OpenLayers.Util.extend(
poiStyle, {fillColor: "red", fillOpacity:0.8, pointRadius:10});
// Punkt konstruieren:
var point = new OpenLayers.Geometry.Point(913148.3,7009351.4);
var pointFeature = new OpenLayers.Feature.Vector(point, null, poiStyle );
pointFeature.ID ="Punkt1";
vectors.addFeatures([pointFeature]);
[B] function punkt_erstellen(x_koordinate,y_koordinate){
var point = new OpenLayers.Geometry.Point(x_koordinate,y_koordinate);
var pointFeature = new OpenLayers.Feature.Vector(point, null, poiStyle );
pointFeature.ID ="Punkt1";
vectors.addFeatures([pointFeature]);
}[/B]
}
</script>
</head>
<body>
<div id= "header">
<h2>WebForum</h2>
</div>
<div id="standard">
<?php include 'db_anmelde.php';
$kat_id = $_REQUEST['kat_id'];
$kat_anzeige = $dbh->query("SELECT kategorie.katname FROM kategorie WHERE id = '$kat_id';");
$row = $kat_anzeige->fetch(PDO::FETCH_OBJ);
?>
<h4>Kategorie:
<? echo $row->katname;?></h4>
</br></br>
<!-- Anzeige der vorhandenen Beitr娥 -->
<?
$beitragsanzeige = $dbh->query("SELECT beitrag.*, autor.autor_id,autor.name, kategorie.katname FROM beitrag,autor,kategorie WHERE fk_kategorie = '$kat_id' AND fk_autor=autor.autor_id;");
if($beitragsanzeige){
while ($row = $beitragsanzeige->fetch(PDO::FETCH_OBJ)){
?>Autor: <?echo $row->name; echo "\t";?><img src="showPic.php?id=<?= $row->autor_id; ?>" width=40 height=40></br>
Kategorie: <?echo $row->katname;?></br>
Datum: <?echo $row->datum;?></br>
Kurzbeschreibung: <?echo $row->kurzbeschreibung;?></br>
[B] <? $x_koord = $row->x_koordinate;?>
<? $y_koord = $row->y_koordinate;?>[/B]
<a href="beitrag_liste_einzel.php?kat_id=<?echo $kat_id;?>&beitrag_id=<?echo $row->id;?>">Beitrag lesen</a>
<a href="beitrag_loeschen.php?beitrag_id=<?echo $row->id;?>">Beitrag löschen</a>
<a href="beitrag_aendern.php?beitrag_id=<?echo $row->id;?>">Beitrag ändern</a></br></br>
<?
}
}
?>
<body onload="init()">
<div style="width:50%; height:400px" id="map"> </div>
[B] <body onload="punkt_erstellen($x_koord,$y_koord)">[/B]
</br>
<a href="ort.php?kat_id=<?echo $kat_id;?>">Beitrag erstellen</a>
</br></br></br>
<a href="index.php">Startseite</a>
</div>
</body>
</html>