In unserem vorherigen Tutorial haben wir untersucht, wie Sie Markierungen hinzufügen und die Farben und Menüs einer Google-Karte mithilfe der Service-API anpassen können. Dieses Tutorial geht noch einen Schritt weiter und erläutert, wie Sie Ihre eigene benutzerdefinierte Karte erstellen können Überlagerung es auf eine Google-Karte (wie meine 1896-Karte von Portsmouth).
In diesem Lernprogramm fügen wir der zuvor erstellten Karte eine Überlagerung für "Wettervorhersagen" hinzu. Die Wetterkarte, die ich verwende, ist völlig fiktiv, aber die beschriebenen Techniken geben Ihnen die Freiheit, alle möglichen interessanten Dinge zu erstellen! Sie können historische Karten, benutzerdefinierte Karten und Nahaufnahmen von bestimmten Bereichen wie einem Universitätsgelände erstellen - die Liste ist endlos!
Ein paar Dinge, die Sie wissen müssen, bevor Sie beginnen:
In diesem Lernprogramm werden die einzelnen Schritte erläutert, einschließlich der Softwaretools, die (zum Glück!) Verfügbar sind, um Dinge zu automatisieren und das Leben erheblich zu vereinfachen. Die Quelldateien für jeden Schritt sind im Download-Paket verfügbar.
Zunächst müssen Sie eine Vorlage erstellen, auf der Sie Ihre eigene Überlagerung erstellen können.
Vorlagenbild, in dem Sie Ihre Karte erstellen. Dieses Bild hat eine Auflösung von 9984x11776 PixelnIhr Ziel ist es, eine Vorlage in Photoshop (oder einer gleichwertigen Grafikanwendung) zu erstellen, die genau dieselbe Größe und Form wie die Google-Karte hat, auf der Sie sie überlagern möchten, wenn sie sich gerade befindet höchste Zoomstufe. (maptiler.org ist nützlich, wenn Sie sich nicht sicher sind, welche Zoomstufe Sie am höchsten benötigen).
Zu diesem Zweck können Sie eine Vorlage-Map mit Mashup von maptiler speichern und dann in Photoshop auf die gewünschte maximale Zoomstufe vergrößern. Zum Beispiel:
Zu diesem Zeitpunkt werde ich die Dinge nicht komplizieren! In einer geringfügigen Änderung gegenüber dem vorherigen Tutorial habe ich die maximale Zoomstufe von 12 auf 10 geändert, um eine überschaubare Dateigröße zu erhalten.
Wenn Sie Ihr Map-JPG mit dem oben beschriebenen Vorgang erstellt haben, öffnen Sie es in Photoshop oder Ihrer bevorzugten Grafikanwendung.
Sie verwenden dieses Bild als Vorlage und zeichnen darüber eine eigene Karte. Damit stellen Sie sicher, dass Ihre Karte perfekt mit der Google-Karte übereinstimmt.
Werfen Sie einen Blick auf das Wetterkartenbild, das ich zu diesem Zeitpunkt erstellt habe, das im Quelldownload verfügbar ist.
Es gibt mehrere Möglichkeiten, wie Sie Ihr Bild aufteilen können, um die Kartenkacheln zu erstellen. Wenn Sie ein paar Hintergrundinformationen über das, was Sie tun, erhalten möchten, lesen Sie weiter. Wenn Sie nicht wissen, warum oder wie es funktioniert, fahren Sie einfach mit dem nächsten Abschnitt fort!
Ein Projektionssystem im geografischen Sinne ist das Erstellen einer flachen Karte aus einem runden Objekt, d. H. Dem Globus. Hierfür gibt es alle möglichen (ehrlich verwirrenden) Formeln und Algorithmen. Alles, was Sie wissen müssen, ist, dass unterschiedliche Projektionssysteme zu unterschiedlichen flachen Karten der Welt führen.
Die Mercator-Projektion (oben) und die Gall-Peters-Projektion (unten) erzeugen recht unterschiedliche zweidimensionale Karten. (Die Raster auf den obigen Bildern beziehen sich nicht auf die Google-Kartenkacheln, die quadratisch sind.).Um eine Überlappung für eine Google-Karte zu erstellen, müssen Sie das "Spherical Mercator" -System verwenden, das die Mercator-Projektion verwendet. Dies ist definiert als EPSG: 900913 oder EPSG: 3857. Weitere Informationen zu Projektionssystemen finden Sie auf der Website Tiles à la Google Maps.
Bevor Sie Ihre Kacheln erzeugen können, müssen Sie die Position der Nord-, Süd-, West- und Ostseite Ihrer Karte ermitteln. Da Sie das "Spherical Mercator" -System verwenden, müssen diese in sphärischen Metern liegen, im Gegensatz zu Längen- oder Breitengrad.
Sie können diese Positionswerte mit diesem Mashup finden. Ich habe festgestellt, dass die einfachste Methode darin besteht, die Ansicht zu vergrößern und jeweils eine Seite zu finden. So finden Sie den Wert für die Westseite Ihrer Karte, notieren Sie sich den Wert, und suchen Sie dann den Wert für die Südseite usw..
Wenn Sie diese vier Werte gefunden haben, können Sie Ihre Karte jetzt in Kacheln aufteilen. Es stehen mehrere Optionen zur Verfügung.
Zum Glück ist die MapTiler-Software sehr einfach zu bedienen! Zum Zeitpunkt der Erstellung dieses Tutorials aktualisiert MapTiler seine Software. Unabhängig davon, welche Version Sie herunterladen, sind dies die grundlegenden Schritte:
Hinweis: Wenn Sie die neue Version von MapTiler verwenden, ist ein Gotcha vorhanden. Ihre Kartenkacheln sind mit einem Wasserzeichen versehen. Ich schätze mal, vielleicht für ein Uni-Projekt oder einen technischen Machbarkeitsnachweis, das ist sowieso kein Thema. Es gibt jedoch einige Möglichkeiten, dies zu umgehen. Der naheliegendste Weg ist, das Upgrade für 20 Dollar zu kaufen, glaube ich. Die andere Option ist die Verwendung des GDAL2Tiles-Python-Skripts. Ich persönlich bevorzuge das Upgrade, da ich meine Zeit lieber mit kreativem Material verbringen möchte, anstatt die Irritationen des Einrichtens der Skriptumgebung zu ertragen, aber Sie fühlen sich vielleicht anders.
Spitze: Wenn bei der Verwendung der MapTiler-Software Probleme auftreten, ist das Benutzerforum äußerst nützlich.Eine Alternative zu MapTiler ist das Skript GDAL2Tiles. Die MapTiler-Software basiert auf diesem Skript, das über die Eingabeaufforderungsschnittstelle ausgeführt wird.
GDAL2Tiles ist das Python-Skript, das im Herzen der MapTiler-Benutzeroberfläche liegt. Sie können dieses Skript direkt über die Eingabeaufforderungsschnittstelle verwenden.GDAL2Tiles bietet weitere Möglichkeiten, ist jedoch etwas komplizierter zu bedienen. Lesen Sie also nur weiter, wenn Sie ein Gefühl von Abenteuer haben!
In der ersten Phase wird die Umgebung zur Ausführung des GDAL2Tiles-Skripts eingerichtet. Wie Sie dies tun, hängt von Ihrem Betriebssystem ab. Wenn Sie einen 32-Bit-Windows-Computer verwenden (klicken Sie hier, wenn Sie sich nicht sicher sind), können Sie OSGeo4W verwenden.
Wenn Sie einen 64-Bit-Windows-Computer verwenden (klicken Sie hier, wenn Sie sich nicht sicher sind), ist das Setup etwas anders. Diese Anweisungen werden (mit freundlicher Genehmigung) direkt aus dem Blog von Jaerock Kwon zitiert, der die uneingeschränkte Anerkennung dieser detaillierten Anweisungen verdient.
Vorausgesetzt, Sie haben den (manchmal traumatischen!) Prozess der Einrichtung der GDAL2Tiles-Softwareumgebung durchlaufen, ist es Zeit, etwas damit zu tun.
Die Eingabeaufforderung von GDAL. Das OSGeo4W sieht dem sehr ähnlich. Die Befehle sind für beide gleich.Unabhängig davon, ob Sie die OSGeo4W- oder die GDAL-Umgebung haben, sollte Ihre Eingabeaufforderung der obigen Abbildung ähneln. Sie können nun das GDAL2Tiles-Skript verwenden.
Zuerst müssen Sie in den Ordner navigieren, in dem die Karte gespeichert ist, die Sie aufteilen möchten. (Diese Befehle sind nützlich, um dorthin zu gelangen, wo Sie sein müssen: dir
gibt Ihnen eine Liste von allem im aktuellen Verzeichnis, CD
bedeutet Verzeichnis wechseln, CD…
bedeutet eine Ebene den Baum hinauf bewegen).
Sobald Sie sich im richtigen Ordner befinden, können Sie mit dem Erstellen Ihrer Kacheln beginnen. Um die Demo-Karte in diesem Lernprogramm zu erstellen, sind dies die Befehle, die ich verwendet habe -
gdal_translate -r04_r4t_t_r4t_a_srs EPSA: 900913 -gcp 0 010307.6791052371 8107979,77743561 -gcp 7248 0 196257.072218982 8109796.717743561 -gcp 72471092925252520110424104104
gdal2tiles.py -p mercator -z 6-10 out.vrt
Um zu erklären, was diese Befehle bewirken, lesen Sie die gdal_translate
Seite und die gdal2tiles.py
Seite. Es gibt auch einen GDAL-Warp-Befehl, der eng miteinander verbunden ist, aber in diesem Fall nicht erforderlich ist. Ein paar Dinge zu beachten sind:
-gcp
Die Eigenschaften beziehen sich auf drei Ecken Ihrer Karte. Das erste Wertepaar nach jedem gcp
Diese Eigenschaft bezieht sich auf die Abmessungen in Pixeln Ihrer Eingabebilddatei. Das zweite Wertepaar gibt die Koordinaten in sphärischen Messinstrumenten an (nicht Längengrad und Breitengrad - siehe oben)..So wenden Sie dies auf Ihre Karte an:
gdal_translate -of_r_r_t_r_t_r_sr_srs_t_r_t_r_s_ein_p_________________________________________________________________________________________________________Pixel 0 östlicher Norden -gcp___________________Up_________________Pixel
gdal2tiles.py -p mercator -z zoom_range name_of_output_file.vrt
Nachdem Sie den zweiten Befehl ausgelöst haben, wird Ihr Computer zum Leben erweckt und beginnt Ihr Bild zu zerschneiden, um die Kartenkacheln zu erstellen. Vielleicht möchten Sie sich die genauen Befehle ansehen, die ich in die OSGeo4W- und GDAL-Umgebungen eingegeben habe, wenn Sie nicht sicher sind, wie Sie mit der Eingabeaufforderung durch die Ordner navigieren.
Unabhängig von der Methode, die Sie zum Generieren Ihrer Kacheln verwendet haben, sind die Ordner gleich.
Alle Kacheln auf einer Google-Karte haben den Wert "x" und "y". (Ja - noch ein anderes Koordinatensystem!) Die erste Ebene der Ordner ist die Zoom-Ebene, dann die nächste Ebene der Ordner die X-Koordinate und der Dateiname die Y-Koordinate.
Wenn Sie sich die Karte auf dieser Website ansehen, sollten Sie feststellen, dass die Namen Ihrer Kacheln übereinstimmen. Wechseln Sie mit anderen Worten zum gewünschten Speicherort, passen Sie die Zoomstufe an den Ordnernamen an und überprüfen Sie die Werte für Google 'x' und 'y'. Sie sollten sehen, dass sie mit Ihren Unterordnern und Dateinamen für die entsprechenden Kartenkacheln übereinstimmen.
Um zu überprüfen, ob Ihre Kacheln in Ordnung sind, empfehle ich dringend, eine oder zwei der für die niedrigste Zoomstufe generierten Kacheln wieder in Ihre Map-Datei (z. B. die Photoshop-Datei) zu kopieren, die in der vorherigen Phase erstellt wurde. Überprüfen Sie, ob sie genau auf Ihre Karte passen. Schauen Sie sich die von mir bereitgestellten Quelldateien an, um ein Beispiel dafür zu erhalten.
Wenn alles gut ist - Glückwunsch - die harte Arbeit ist erledigt!
Ach je. Dies ist der Fall, wenn Sie die ältere Version der MapTiler-Software oder das GDAL2Tiles-Skript verwendet haben. Ihre Dateien (aber nicht die Ordner) werden nach der TMS-Namenskonvention benannt. Wenn Sie die Kacheln auf dieser Seite betrachten, können Sie feststellen, dass jede Kachel zwei x- und y-Werte hat. dh. ein Google-Paar und ein TMS-Paar. Wir müssen sie nur umbenennen in die Namenskonvention von Google Map.
Diese Umbenennung kann manuell erfolgen, dauert jedoch für die meisten Karten viel zu lange. Glücklicherweise gibt es ein praktisches Shell-Skript, das die Arbeit für Sie erledigt. Sie müssen ein wenig über grundlegende Linux-Befehle wissen, z. B. wie Sie den Ordner ändern. Erstellen Sie vor dem Ausführen des Shell-Skripts eine Kopie Ihrer Kacheln, um daran zu arbeiten.
#! / bin / sh für thisPath in 'ls -d * / * / *' doFile = $ thisPath # * / * / oldY = $ thisFile% .png zoomX = $ thisPath% / * zoom = $ thisPath% / * / * newY = $ (((1<Kopieren Sie das obige Skript und fügen Sie es in den Editor ein. Speichern Sie es unter dem Namen "Rename" und der Erweiterung ".sh". Stellen Sie beim Speichern der 'SH'-Datei in Notepad sicher, dass' Alle Dateien 'neben' Als Typ speichern 'ausgewählt ist, und geben Sie den Namen in Anführungszeichen ein, z. "Umbenennen.sh".
Wenn Sie einen Mac verwenden, kann dieses Shell-Skript in Terminal ausgeführt werden Anwendungen dann Dienstprogramme dann Terminal).
Wenn Sie sich auf einem Windows-Computer befinden, müssen Sie zum Ausführen von Shell-Skripts (oder '.sh'-Dateien) Cygwin verwenden, eine Linux-ähnliche Umgebung für Windows:
- Laden Sie Cygwin herunter und installieren Sie es
- Kopieren Sie die soeben gespeicherte Datei "rename.sh" in den Ordner cygwin \ bin.
- Starten Sie Cygwin.
- Bewegen Sie sich zum Cygwin \ bin Mappe. (dh.
CD
bedeutet Verzeichnis wechseln,CD…
bedeutet, den Baum eine Ebene nach oben zu verschieben, undls
bedeutet, die Dateien und Ordner im aktuellen Verzeichnis anzeigen.)- Umbenennen.sh ausführbar machen, indem Sie ausführen
chmod 755 umbenennen.sh
- Sie müssen es auch in eine Linux-Datei konvertieren, bevor Sie es ausführen. Andernfalls werden durch die Zeilenumbrüche '\ r'-Fehler verursacht. Vergewissern Sie sich, dass Sie sich noch im Internet befinden Cygwin \ bin Ordner und ausführen
d2u umbenennen.sh
- Wechseln Sie dann zu dem Ordner, der Ihre Kacheln enthält (siehe Screenshot oben)..
- Geben Sie dann ein, um das Skript auszuführen
umbenennen.sh
Nachdem das Shell-Skript ausgeführt wurde, können Sie überprüfen, ob die Aufgabe erledigt ist, indem Sie Ihre Dateien erneut betrachten. Prüfen Sie, ob ihre Namen jetzt mit den Google-Koordinaten auf dieser Seite übereinstimmen.
Wenn Sie die Dateinamen in den 'Part 3-Dateien' und die 'Part 4-Dateien' in den Quelldateien vergleichen, können Sie den Unterschied erkennen.
Komprimieren Ihrer Kartentitel
Um sicherzustellen, dass Ihre Karte so reibungslos wie möglich läuft, können Sie Ihre Kartenkacheln komprimieren.
Es gibt verschiedene kostenlose Komprimierungsprogramme für PNG-Bilder, aber ich hatte Mühe (und schlug fehl), eines zu finden, das völlig frei war und die Arbeit erledigte. Beispielsweise hat die beliebte PNGGauntlet-Software die Ordnerstruktur nicht beibehalten, wohingegen andere kostenlose Dienstprogramme die maximale Anzahl von Dateien begrenzt haben.
Am Ende musste ich die Kugel beißen und die PNGOUTWin-Software kaufen. Dies kostete rund £ 10, was angesichts der Fantasien, die er eingespart hat, ein Schnäppchen ist! PNGOUTWin behält sowohl die Dateistruktur als auch die Komprimierung aller Dateien bei.
Wenn Sie PNGOUTWin verwenden, ist es ziemlich intuitiv. Meine einzige Warnung ist, dass Sie eine Kopie Ihrer Kacheln erstellen und dann die Software auf der Kopie ausführen. Beachten Sie auch, dass die Software buchstäblich gestartet wird, sobald Sie den Ordner ausgewählt haben!
JavaScript-Magie, um alles zusammenzubringen
Okay, wir sind fast da. Alles, was bleibt, ist die kleine Sache, Ihre schönen neuen Kartenkacheln an Ihre Google-Karte anzuhängen.
Der Basiscode
Sehen Sie sich zunächst ein einfaches Beispiel für eine gekachelte Kartenüberlagerung an (Quelldateien sind über den Link oben auf dieser Seite verfügbar)..
Wenn Sie die Ansicht vergrößern oder verkleinern, bleibt die Kartenüberlagerung erhalten.
// Einrichten der Regenkarten-Überlagerung var rainMapOverlay = new google.maps.ImageMapType (getTileUrl: function (coord, zoom)) return 'tile / rain' + '/' + zoom + '/' + coord.x + '/' + coord.y + '. png';, tileSize: new google.maps.Size (256, 256));Dieses Snippet verwendet die ImageMapType-Klasse zum Erstellen der benutzerdefinierten Überlagerung. Das
coord.x
bezieht sich auf den Ordnernamen und diecoord.y
bezieht sich auf den Dateinamen. Diese werden im Code zusammengefügt, um den Pfad zu jeder Kachel zu erstellen.Anschluss an die UK Festival Map
Dies ist das Endprodukt, auf das Sie abzielen. Um dies zu erstellen, können Sie dieselben Techniken verwenden, die am Ende des vorherigen Lernprogramms erläutert werden.
Wir erstellen zuerst eine Variable (
rainoverlayToggle
) zu halten, ob das Wetter-Overlay aktuell angezeigt wird oder nicht. Und dann erstellen Sie eine neue Option in derHandelAnforderungen
Funktion, um mit der Situation umzugehen, wenn der Schirmknopf (Regenschirm
) wird angeklickt.// Zeigt die Niederschlagskarte an, wenn auf die Schaltfläche Unbrella geklickt wird, und entfernt sie, wenn sie bereits angezeigt wird. else if (buttonPressed === "regen") // Wenn die Niederschlags-Karte NICHT bereits angezeigt wird, dann zeigen Sie sie… if (rainOverlayToggle === 0) // Überlagert die Niederschlagskarte oben auf der Google-Karte festivalMap.overlayMapTypes .insertAt (0, rainMapOverlay); // Zeigt den Wetterschlüssel an. festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .push (weatherKeyDiv); rainer_overayToggle = 1; // Wenn die Niederschlagskarte bereits angezeigt wird, blenden Sie sie aus… else // Entfernen Sie die Overlay-Karte. festivalMap.overlayMapTypes.removeAt (0, rainMapOverlay); // Entferne den Wetterschlüssel festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .pop (weatherKeyDiv); rainer_overayToggle = 0;
Was als nächstes?
Gut gemacht, um das Ende zu erreichen! Wenn Sie irgendwelche Fragen haben, fragen Sie bitte in den Kommentaren nach. Im nächsten Tutorial wird beschrieben, wie Sie sich mit der Flickr-API verbinden. So können Sie Fotos automatisch von Flickr holen und auf Ihrer Karte anzeigen.
Bildnachweise
- Mercator-Projektionskarte - Wikipedia
- Gall-Peters-Projektionskarte - Wikipedia