Karte von Hamburg in Website einbinden

Hallo,

ich bin hier langsam am verzweifeln :frowning:
ich versuche die Karte von Hamburg in eine Webseite einzubinden, allerdings will das nicht klappen

ich habe folgenden Beispielcode aus dem OSM wiki genommen:

OpenLayers Demo html, body, #map { width: 100%; height: 100%; margin: 0; }

wenn ich jetzt die Datei “OpenStreetMap.js” einbinde, dann bekomme ich ein Bild, allerdings ist dann die ganze Welt zu sehen beim Rauszoomen. Wenn ich diese datei nicht einbinde dann bekomme ich nur einen Weissen Hintergrund angezeigt.

Wie bekomme ich es nun hin, auf die Datei hamburg.osm zuzugreifen ?

wäre sehr dankbar für ein paar hilfreiche antworten!

Hi oneandonlycore, erst mal noch ein herzlich Willkommen :slight_smile:

Von wo aus dem Wiki hast du denn den Code genommen?
Ich glaube du bringst da ein paar Dinge noch durcheinander.

Es gibt OpenLayers (was du nutzt), eine Javascript Bibliothek, mir der du Kartenkacheln, WMS Karten-Streams oder einzelne Vektordateien anzeigen kannst.
Auf der anderen Seite gibt es die .OSM XML Dateien, die die Daten von OSM enthalten, aber diese können dort nicht direkt angezeigt werden.

Was möchtest du denn machen? Eine eigene Karte (eigener Style und Server) von Hamburg anbieten oder einfach verhindern, dass man aus Hamburg rausszoomt?

Die umwandlung von Hamburg.osm in 256x256 große tiles nimmt dir openlayers leider nicht ab ;-(

Dafür musst du vorab mapnik, maperitive oder kosmos bemühen.

Gruß,
ajoessen

Hallo,

also den Code habe ich aus diesem Wiki:
http://wiki.openstreetmap.org/wiki/DE:OpenLayers_Simple_Example

mein vorhaben ist, nur Hamburg angezeigt zu bekommen um dort statische Markierungen zu machen. Das Ganze soll auf einem eigenen Server sein, damit ich mehr oder weniger unabhängig von den OSM Servern bin

geht dass denn nicht mit open layers ? wie/ mit was kann ich denn sowas realisieren ?

MfG

Das geht schon (und ist auch gut so). Du musst halt nur die Kacheln (Tiles) einmalig selber aus der Hamburg.osm erzeugen.

Anleitungen für Windows gibts hier:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Mapnik

Gruß,
ajoessen

Na wenn er die Tiles nur einmal zieht sollte ein Downloaden von einem der TileServer doch erlaubt sein… :wink:
Hamburg ist ja nicht sooo groß.

ich finde, dass für das einmalige erzeugen von Tiles für Hamburg die Nutzung von Postgres und Mapnik der Overkill ist. Wenn man es nicht direkt von den OSM Servern ziehen will…In Maperitive sind das 3 Befehle (clear-map, load-source, generate-tiles)

@Chris…was sollen solche Hinweise? :frowning: Wenn wir schon selber dazu anstiften, gegen die Tile-Server-Regeln zu verstoßen, müssen wir uns auch nicht wundern, wenn andere diese auch nicht Ernst nehmen.

@oneandonlycore:

Ich würde dir auch zu Maperitive raten. Viele Funktionen findest du direkt in der GUI als Schaltfläche, der Rest ist in der Hilfe gut dokumentiert. Wenn du die Tiles hast, kannst du diese über OpenLayers auf deine Website bringen.

Welches Betriebssystem setzt du ein? Wäre das eine Option für dich: http://forum.openstreetmap.org/viewtopic.php?id=13983
Ich habe diesen Server unter Windows in einer virtuellen Maschine laufen und bin nicht unglücklich darüber. Der Import von Berlin hat bei mir weniger als 10 Minuten gekostet. Der Download der Küsten und Co schon etwas länger.
Aber im Prinzip hättest du dann genau das erreicht was du möchtest. Wenn nur Hamburg importiert ist bleiben die Kacheln außen rum recht einfarbig. Allerdings sind die Geofabrikextrakte nicht grenzgenau. Da müßtest du vielleicht mit einem eigen Polygon nachschneiden.

(1) Es wurden konkret einige Tools genannt, die nicht mehr beworben werden sollen. Hab ich auch nicht getan.
(2) diese Tools sind bereits “gedrosselt” worden
(3) Haben wir mittlerweile auch unproblematische Tile-Anbieter
(4) Glaube ich nicht, dass das Laden von einer einzelnen Stadt bereits problematisch ist

Hallo,

@viw
Also Mein OS ist ein Ubuntu 11.04
momentan befindet sich das alles noch lokal auf meinem PC, aber wenn es alles klappt wird das auf einen server übertragen von daher denke ich, dass die Tileserver Möglichkeit (vorerst zumindest) wegfällt ;).

@chris66
Die Möglichkeit fällt denke ich auch weg, da ich ja im falle eines Updates die Daten wieder neu vom Tileserver ziehen müsste oder ?

@SunCobalt
ab wann wäre denn “Mapnik” und oder “Postgres” deiner Meinung nach von Nöten ? sprich: ab welcher Größe hälst du es für sinnvoll das einzusetzen ?

@rest :wink:

Also wenn ich das jetzt richtig verstanden habe, brauche ich “Maperitive” oder ähnliches um aus der .OSM Datei die Tiles zu erzeugen oder ?
Wenn ja, wird das dann immer dynamisch gemacht, also mit jedem male wo ich zoome werden die Tiles neu gerendert oder passiert das einmalig für alle Tiles ?

Nein, das machst du einmalig vorher. Und danach sooft, wie du ein Update des Kartenhintergunds für notwendig hältst.

Gruß,
ajoessen

Wenn es nicht mehr tragbar ist, alle Tiles vorab alle zu rendern sondern “on-demand”. Für mich persönlich etwa größeres Bundesland, aber das ist Geschmackssache. Und dann, wenn man die Tiles auch tagesaktuell haben möchte.

Danke erstmal für die Antworten! Ihr habt mich schonmal ein ganzes Stück weiter gebracht! :slight_smile:

Habe die Tiles nun erzeugt und den Pfad in dem Script angepasst. Jetzt Sehe Ich zumindest Schonmal ein Raster, aber noch keine Bilder (mir wird dieses Zerissene-Datei icon angezeigt ^^)
Liegt das evtl an den Zoomstufen ? Es wurden bei mir stufe 7 - 11 gerendert. An den Rechten liegt das Problem jedenfalls nicht.

In dem Script weiter oben hast du Zoomlevel 14 als Startwert eingegeben. Also musst du den ändern, oder bis Zoomlevel 14 weiter rendern.

Gruß,
ajoessen

ich hatte ihn schonmal testweise mit lvl 10 probiert … hat auch nicht geklappt …

ich glaube das problem liegt in diesem teil:

(http://wiki.openstreetmap.org/wiki/DE:OpenLayers_Simple_Example)
var newLayer = new OpenLayers.Layer.OSM(“New Layer”, “path_to_tiles/”, {numZoomLevels: 19});
“path_to_tiles” - URL zum Server der Basiskarte

wenn ich mir das raster mit firebug anschaue, dann passiert nach dem ordner “Tiles” nichts mehr… und da die Tiles ja anscheinend im normalfall in mehreren unterordnern sind, funktioniert das natürlich nicht … da fehlt wohl noch ein Script :confused:

Ja das ist etwas zu grob vereinfacht. Bei mir funktionierts so:

		var MyMapnikLayer = new OpenLayers.Layer.OSM("myMapnik", "file:///D:/Tiles/myMapnik/${z}/${x}/${y}.png", {numZoomLevels: 16, alpha: true, isBaseLayer: true, visibility: true});
        map.addLayer(MyMapnikLayer);

Bei Ubuntu möglicherweise ewas anders. aber z/x/y.png muss schon noch mit rein.

Gruß,
ajoessen

Ja, als URL musst Du denke ich eine in der Art: “file:///” angeben, Orderstruktur so wie auf den Servern
also z/x/y.png
Chris

Es Klappt endlich!
genau so wie ajoessen geschrieben hat
“Tiles/myMapnik/${z}/${x}/${y}.png” geht auch bei ubuntu/linux :wink:
diese Pfadvariablen haben mir gefehlt!

Vielen vielen Dank für eure Hilfe!! :slight_smile:

Hi,

Also ich will das ganze jetzt auf Mapnik umbauen, da das Rendern für mehrere Zoomstufen ja doch sehr lange dauert (und weil evtl später mal eine größere Karte mit rein soll :wink: )
Der Server steht soweit schonmal, das heisst die Karte wurde schon mit osmosis in die Datenbank eingspielt.
Beim aufrufen im Browser über die IP xxx.xxx.xxx.xxx:3000 wird mir dann allerdings die komplette weltkarte angezeigt, die er offenbar vom offiziellen OSM-Server zieht.
Jetzt Stellen sich mir einige fragen:

Wie kann ich das verhindern, dass die Karte vom offiziellen OSM-Server gezogen wird ?
Wo liegen die Dateien, auf die ich zugreife, wenn ich über die IP oben auf meinen Server zugreife?
Wie baue ich die Hamburg Karte da ein?

achja… das OS des servers is ein Debian 6 :wink: