Ist so ein bisschen ins Blaue hinein, aber es käme auch ein Projektionsproblem in Frage:
Wenn die Karte nicht so aussieht wie im von efred verlinkten Bsp. (höhere Breitengraden gestaucht), sondern “wie man es gewohnt ist” (Merkartor-Projektion), müssten m.E. die Werte deutlich größer sein, etwa so wie diese hier (mit noch ein bisschen Erläuterungen, das kann Mr Wolf besser als ich): http://forum.openstreetmap.org/viewtopic.php?id=15307
(bzw. wenn sie so nicht vorliegen, müssen sie in diese Projektion transformiert werden)
Die kleinen Werte würden sonst nahe 0,0 (vor Ghana) abgebildet.
var boxes = new OpenLayers.Layer.Vector( "Boxes" );
for (var i = 0; i < box_extents.length; i++) {
ext = box_extents[i];
bounds = OpenLayers.Bounds.fromArray(ext);
box = new OpenLayers.Feature.Vector(bounds.toGeometry());
boxes.addFeatures(box);
}
map.addLayers([ol_wms, boxes]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
var sf = new OpenLayers.Control.SelectFeature(boxes);
map.addControl(sf);
sf.activate();
map.zoomToMaxExtent();
Dann ist der Browser leider nicht gewillt, ein Rechteck anzuzeigen.
Könnte es am
map = new OpenLayers.Map('map');
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'} );
Wenn Du vor Afrika bei bei (0,0) landest, hast Du entweder Koordinaten von (0,0) oder Du hast irgendwo ein
.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
vergessen. Ausserdem hast Du die Koordinaten in der falschen Reihenfolge (falls die Box in Deutschland sein soll). So z.B. würde es gehn.
Grüße, Max
PS: Der Unterschied zwischen dem openlayers-Beispiel und meinem ist, dass die dort eine Plattkarte haben, mit (Längengrad/Breitengrad). OSM ist in Mercator. Das misst in soetwas ähnlichem wie “Meter” und wenn Du eine Box mit (53, 11, 56, 12) malst, ist die nur 1m breit und 3m hoch und wirkt sehr klein auf der Weltkarte.
Nachtrag: Und da das Beispiel wegen Provider kaputt grad nicht erreichbar ist:
var box_extents = [[11,53,12,56],[12.5,53.5,14.5,56.5]];
var boxes = new OpenLayers.Layer.Boxes('Boxes');
for (var i = 0; i < box_extents.length; i++) {
ext = box_extents[i];
bounds = OpenLayers.Bounds.fromArray(ext);
bounds.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
box = new OpenLayers.Marker.Box(bounds);
boxes.addMarker(box);
}
@Ghostrider… Ich habe es mir nochmals kurz angeschaut. Hierzu sollte man folgendes wissen:Wo neben Afrika landest Du mit den Koordinaten 53,11,56,12? Irgendwo bei 0,0 oder doch eher neben Somalia im Meer?
Wenn Du neben Somalia landest - was ich vermute - musst Du nur die Koordinaten anders setzen:Mit var box_extents = [[11, 53, 12, 56]]; statt var box_extents = [[53, 11, 56, 12]]; sollte das Rechteck nicht mehr neben Afrika sein, sondern in Norddeutschland.
ihr habt mal wieder Licht ins Dunkel gebracht, ganz herzlichen Dank dafür schon einmal.
Konkret waren es die Reihenfolge der Koordinaten, ich habe dann noch ein wenig mit der Transformation herumgespielt, dann lief es wie geschmiert.
Ich versuche nun, mehrere Rechtecke aus einer Datenbank zu holen, was bis dahin auch klappt.
Auch gelingt es mir nun, diese auf die Karte zu projezieren.
Was aber merkwürdig aussieht ist, dass (ich habe 3 Rechtecke definiert->DB), Hamburg, Berlin, München.
Nun packt er mir aber 2 übereinander, das Hamburger Rechteck fehlt.
? konntest Du also das Problem beheben der überlappenden Rechtecke? Was war der Fehler? (wäre vielleicht interessant, falls mal jemand anderes das gleiche Problem haben sollte).