Hallo,
ich habe anhand dieses Beispiels eine Anbindung zur Datenbank geschaffen.
http://wiki.openstreetmap.org/wiki/User:Brogo/OpenLayers_Datenbankanbindung
Da mir das Ergebnis mit Format.Text nicht gefallen hat bin ich dazu übergegangen das Beispiel für den Gebrauch mit JSON umzubauen.
Nun werden die Marker allerdings nicht mehr angezeigt und es kommt auch keine Fehlermeldung.
Der Aufruf erfolgt über:
new OpenLayers.Layer.Vector("Blah", {
projection: "EPSG:4326",
strategies: [
new OpenLayers.Strategy.BBOX({resFactor: 1.1}),
new OpenLayers.Strategy.Cluster()
],
protocol: new OpenLayers.Protocol.HTTP({
url: "dbcsv.php",
format: new OpenLayers.Format.JSON()
}),
styleMap: new OpenLayers.StyleMap({
"default": style
})
});
In der dbcsv.php habe ich den Header entfernt und die Daten wie folgt in JSON umgewandelt:
$arr = array (
'layer'=>null,
'lonlat'=>null,
'data'=>array(
'id'=>$i,
'lon'=>$row['lon'],
'lat'=>$row['lat'],
'title'=>$row['headline'],
'bild'=>$row['bild'],
'description'=>$content
),
'attributes'=>array(
'id'=>$i,
'lon'=>$row['lon'],
'lat'=>$row['lat'],
'title'=>$row['headline'],
'bild'=>$row['bild'],
'description'=>$content
),
'style'=>array(
'externalGraphic'=>'marker.png',
'graphicHeight'=>37,
'graphicWidth'=>32,
'graphicYOffset'=>-35,
'graphicXOffset'=>-16
)
);
echo json_encode($arr);
Dies ergibt dann einen Eintrag wie folgenden:
{"layer":null,"lonlat":null,"data":{"id":0,"lon":7.82006,"lat":48.5129,"title":"blah","bild":"test.png","description":"blub"},"attributes":{"id":0,"lon":7.82006,"lat":48.5129,"title":"blah","bild":"test.png","description":"blub"},"style":{"externalGraphic":"marker.png","graphicHeight":37,"graphicWidth":32,"graphicYOffset":-35,"graphicXOffset":-16}}
Wenn ich die Daten direkt ins JS einbaue, so dass die Marker erscheinen und dann mit Format.JSON.write einen Eintrag ausgebe bekomme ich in etwa so einen Text:
{"layer":null,"lonlat":null,"data":{"id":0,"lon":7.82006,"lat":48.5129,"title":"blah","bild":"test.png","description":"blub"},"id":"OpenLayers.Feature.Vector_3306","geometry":{"id":"OpenLayers.Geometry.Point_3305","x":870525.09705167,"y":6192611.2709086,"bounds":{"left":870525.09705167,"bottom":6192611.2709086,"right":870525.09705167,"top":6192611.2709086,"centerLonLat":{"lon":870525.09705167,"lat":6192611.2709086}}},"state":null,"attributes":{"id":0,"lon":7.82006,"lat":48.5129,"title":"blah","bild":"test.png","description":"blub"},"style":{"externalGraphic":"marker.png","graphicHeight":37,"graphicWidth":32,"graphicYOffset":-35,"graphicXOffset":-16}}
Wie man sieht fehlen bei mir die Einträge für “id” und “geometry”.
Kann das der Fehler sein? Wenn ja, wie kann ich die Einträge dem JSON mit geben? Wenn nicht, wo liegt der Fehler dann?