DOCTYPE-Problem mit OpenLayers
-
DOCTYPE-Problem mit OpenLayers · l3u (Gast) · 11.02.2013 11:59 · [flux]
Hallo :-)
Ich will mittels OpenLayers eine Karte in eine Webseite einbinden. Ich habe das OpenLayers-Beispiel aus dem Wiki genommen und etwas angepasst (den Code zum Laden der Karte in eine extra JavaScript-Datei ausgelagert). Also gibt es ein
setupMap.js:
function␣setupMap() {
map␣=␣new␣OpenLayers.Map("map"); map.addLayer(new␣OpenLayers.Layer.OSM());
var␣lonLat␣=␣new␣OpenLayers.LonLat(11.7450785,␣50.3158229).transform( new␣OpenLayers.Projection("EPSG:4326"), map.getProjectionObject() ); var␣zoom␣=␣16; var␣markers␣=␣new␣OpenLayers.Layer.Markers("Markers");
map.addLayer(markers); markers.addMarker(new␣OpenLayers.Marker(lonLat)); map.setCenter␣(lonLat,␣zoom);
}
Und hier die HTML-Datei:
<?xml␣version="1.0"␣encoding="utf-8"?>
<!DOCTYPE␣html␣PUBLIC␣"-//W3C//DTD␣XHTML␣1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html␣xmlns="http://www.w3.org/1999/xhtml"␣xml:lang="en">
<head> <script␣src="http://www.openlayers.org/api/OpenLayers.js"␣type="text/javascript"></script> <script␣src="setupMap.js"␣type="text/javascript"></script> </head>
<body␣onload="setupMap();"> <div␣id="map"></div> </body>
</html>
Nur leider funktioniert das nicht … lässt man allerdings die DOCTYPE-Angabe weg, also das
<!DOCTYPE␣html␣PUBLIC␣"-//W3C//DTD␣XHTML␣1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
dann wird die Karte geladen.
Warum?!
Vielen Dank für alle Hilfe!
- Re: DOCTYPE-Problem mit OpenLayers · l3u (Gast) · 11.02.2013 12:32 · [flux]
Okay, doch selbst gelöst! Man muss einfach die Größe des Map-divs explizit angeben. Also z. B. mittels
#map␣{ width:␣100px; height:␣100px; }
Ich lasse den Post mal stehen, vielleicht stolpert ja noch jemand anderes über dieses Problem?
- Re: DOCTYPE-Problem mit OpenLayers · Nop (Gast) · 11.02.2013 16:11 · [flux]
Welcher Browser?
Habe selbst schon Unterschiede beobachtet: Ohne explizite Angabe der Größe, FF funktioniert, im IE ist keine Karte zu sehen.
bye, Nop
- Re: DOCTYPE-Problem mit OpenLayers · Netzwolf (Gast) · 11.02.2013 16:45 · [flux]
Nahmd,
Nop wrote:
Habe selbst schon Unterschiede beobachtet: Ohne explizite Angabe der Größe, FF funktioniert, im IE ist keine Karte zu sehen.
Wahrscheinlich hat der IE sogar recht. 🤔
Die Situation ist eine lustige: die Höhe des Map-Elementes wird vom Inhalt bestimmt, das Element wird wird also “aufgedrückt”. Der Viewport im Inneren aber hat eine Höhenangabe von “100%”, die wird also vom Map-Objekt bestimmt. Da beißt sich die Katze in den Schwanz. 🙂
Der FF sucht offensichtlich bei einer Prozentangabe nach dem nächsten umgebenden Element, das eine sinnvolle Höhe hat (ist oft das <body>) und bezieht sich darauf.
Während der IE die 100% auf das direkt umgebende Element bezieht und 100% von 0 = 0 berechnet.
Übrigens kann man das IE-Verhalten im FF nachbilden, indem man dem Map-<div> ein “position: absolute” in den Style schreibt. Dann zeigt auch der keine Karte mehr an.
Also: brav immer die Höhe angeben.
Gruß Wolf
- Re: DOCTYPE-Problem mit OpenLayers · Nop (Gast) · 11.02.2013 18:13 · [flux]
Netzwolf wrote:
Wahrscheinlich hat der IE sogar recht. 🤔
IE hat nie recht. :-)
In meinem Fall waren genügend relative Abstandsangaben vorhanden, um die Breite korrekt auszurechnen. Der IE hat nur darauf verzichtet.
bye, Nop