GoogleMap vs. OpenStreetMap

Nachdem ich heute wieder (und schon einige Male davor) von einer GoogleMap genervt wurde, hab ich mich der Sache mal genauer angenommen. Mit dem Ergebnis: GoogleMap raus, OpenStreetMap rein.

Die GoogleMap verwendete den ganz normalen Google Code wie er auch dokumentiert wurde. Zusätzlich wurden Marker mit Hilfe einer XML-Datei gesetzt.
Diese Dateien sahen dann wie folgt aus:

 
 <markers>
 <marker lat="49.4575924" lng="11.0890298" icontype="ub">
    <label><![CDATA[Haltestelle Rathenauplatz]]></label>
    <infowindow><![CDATA[U2 Richtung Flughafen/ U3 Richtung Maxfeld]]></infowindow>
  </marker>

  <marker lat="49.445616" lng="11.082989" icontype="ub">
    <label><![CDATA[Nürnberg Hauptbahnhof]]></label>
    <infowindow></infowindow>
  </marker>

   <marker lat="49.4532515110727" lng="11.07860952615738" icontype="bh">
    <label><![CDATA[Bushaltestelle Heilig-Geist-Spital ]]></label>
    <infowindow></infowindow>
  </marker>

     <marker lat="49.45847511506435" lng="11.081940829753876" icontype="bh">
    <label><![CDATA[Bushaltestelle Maxtor]]></label>
    <infowindow></infowindow>
  </marker>

<marker lat="49.45868084" lng="11.0857442" icontype="info">
    <label><![CDATA[Infotheke Webkongress Erlangen]]></label>
    <infowindow></infowindow>
  </marker>
  </markers>

Eigentlich ist die Syntax nicht so schwer begreiflich. Aber die Tücke liegt im Detail. Die Datei wurde von mehreren Kolegen bearbeitet, die überdies nicht in einer homogenen Arbeitsumgebung sind. Einer griff via vi aus der Unixshell drauf zu, der andere via Notepad von Windows und wiederum jemand anders über ein ganz anderes Tool.
Das Problem war: Das JavaScript erwartet eine valide XML-Datei. Sobald jedoch Sonderzeichen nicht mit UTF8, sondern mit einem anderen Charset gespeichert wurden oder jemand anders -in Kenntnis des Problems, dass sein Editor unter Windows nicht in UTF8 zu speicherte- Entities verwendete, wurde die Datei nicht interpretiert und die gesamte Karte wurde nicht gezeichnet.

Die Karte wurde also nur dann erstellt, wenn keine entweder keine Sonderzeichen vorhanden waren, oder diese ganz streng nur in UTF8 geschrieben waren.
Jemand, der nur auf einem Betriebssystem wird nun die Schultern zucken und sagen: „So what?!“.
Aber wer wie ich in einem heterogenen Umfeld arbeitet wird wohl mitfühlen können. Einige Editoren haben nicht einmal eine Konfigurationsmöglichkeit bei der man angeben kann, in welchem Charset gespeichert wird! Die übernehmen dann im Bestfall dass vom Betriebssystem (was auch nicht unbedingt optimal sein muss. Windows-Charset, you know?).
Andere Editoren (Dreamweaver CS3) haben zwar die Konfigurationsmöglichkeit, in UTF8 zu speichern, tun dies aber nur für neue Dateien. Wenn ich damit eine Datei öffne, die bereits im Windows-Murkschar gespeichert ist, läßt es das so wie es ist undich hab trotzdem keine Portierungsmöglichkeit.

Nun ja, lange genug gejammert.

Ich bin schlicht auf OpenStreetMap umgesteigen.
Mit den OpenLayer POI wird das Problem einfach dadurch umschifft, indem man als Quelle für Marker eine Textdatei nimmt.
Mit der Methode OpenLayers.Layer.Text wird diese Datei eingelesen und interpretiert.

Eine Textdatei, bei der man lediglich darauf achten muß, Tabstops richtig zu setzen, stellt für normale User auf alle Fälle eine Erleichterung dar gegenüber einer XML-Datei.

Hier das Ergebnis:
Plan der Umgebung zum Webkongress Erlangen 2010

Die Textdatei sieht wie folgt aus: wke2010-orte.txt

Frecherweise hab ich mich bei den Icons dann aber doch bei der Google Map Icon Library bedient.

3 Kommentare zu “GoogleMap vs. OpenStreetMap

Kommentarfunktion ist geschlossen.

  1. Hm… die CSS-Definition der Karte gibt da 650px an. Links das Menu+Padding vom Content sind nochmal 260px.
    Die rechte Spalte sind 250px.
    Von daher, ja: Bei einer Auflösung kleiner als 1200px Breite ist es nicht so schön.

    Als ich die Karte kleiner gehabt hatte (500px) und auch den Zoomfokus kleiner hatte war es allerdings so, daß man zu wenig erkennen konnte.
    Pläne brauchen halt Platz :/