Frage

Ich habe die Geo-Koordinaten (latidute & Länge) von einigen Städten und möchte die x bekommen, y-Koordinaten, so können sie in einer Karte darzustellen.

Die Karte ist ein standart ein, wie http: // www. wordtravels.com/images/map/Spain/Fuerteventura_map.jpg zum Beispiel.

Ich habe versucht, mehrere formular ich gefunden, aber keiner scheint wirklich Arbeit :( einfache JavaScript-Code oder Rubin wäre am besten.)

War es hilfreich?

Lösung

zusätzlich zu den oben genannten Antworten gibt es die Open-Source-Bibliothek, die proj4js führt Transformationen zwischen verschiedenen Kartenprojektion. wird intern von Openlayers für diese Art der Sache, und unterstützt eine Reihe von populären Projektionen und Koordinatensysteme verwendet werden.

Andere Tipps

Es gibt viele Möglichkeiten, dieses Problem mit unterschiedlichem Grad an Präzision zu nähern. Doch sie alle einkochen einen Vorsprung auf die Durchführung derjenigen entspricht, mit der Karte aus.

Wenn Sie wissen, dass Ihre Karte von der Mercator-Projektion Sorte ist, dann ist die Breiten- / Längenkoordinaten können einfach als X / Y behandelt werden, skaliert und entsprechend übersetzt. Das heißt, würden Sie finden eine einfache ax + b und cy + d, die die Arbeit machen.

Wenn Sie Ihre Karte ist nicht Mercator-Projektion (wie es ist wahrscheinlich nicht, ob es die Skala konsistent zu bekommen versucht, wie diese erscheint zu tun), dann Ihre beste Wette ist, es ist eine „Erde-Tangente“ Projektion zu übernehmen. (Das funktioniert OK für kleine Landmassen.) In diesem Fall müssen Sie zuerst Projekt die Breite / Länge in ein dreidimensionales Koordinatensystem.

z=sin(lat)
x=cos(lat)*sin(long)
y=cos(lat)*cos(long)

Positive z Punkte zum Nordpol. Positive y Punkte auf 0, 0 und positiven x Punkte auf lat 0 lang 90 (Osten) und positive lat / sind lang Norden und Osten. Natürlich müssen Sie in Radiant konvertieren zuerst.

All dies setzt voraus, eine kugelförmige Erde, die nicht ganz richtig ist, aber es ist nah genug, wenn Sie Langstreckenmörsergranaten sind zu schießen.

Wie auch immer, sobald Sie Ihre XYZ haben, dann müssen Sie drehen und Maßstab für die Karte. Zum Drehen um die Z-Achse, subtrahieren Sie einfach die Basis Länge, bevor Sie in drei Dimensionen projizieren. Tun Sie dies für einfachste mathematische Ihre Karte auf Null-Länge zu zentrieren.

Sobald Sie dies getan haben, werden Sie nur die Kugel nach vorne drehen müssen, bis die ursprüngliche Karte Gesicht-Front ist. Tun Sie dies mit einer 2-D-Drehung in der y-z-Achse. Verwenden Sie http://en.wikipedia.org/wiki/Coordinate_rotations_and_reflections Figur, dass ein Teil aus.

Schließlich Ihre x, z-Koordinaten werden ziemlich gut aufreihen mit Ihrer Karte der x, y-Koordinaten für einen geeigneten Maßstab / übersetzen, wie zuvor beschrieben wurde.

vielleicht dies wird dazu beitragen, ich habe eine Implementierung für die USA getan nur mit Hilfe von Javascript.

Demo / code: http://the55.net/_11/sketch/us_map

Verwenden Sie die Google Maps API, können Sie es Ihre jpg auf der Karte und Position korrekt überlagern können.

Hier ist ein Beispiel http://code.google.com/apis/ Karten / Dokumentation / javascript / examples / Overlay-hideshow.html

und hier ist die api Seite über Overlays http://code.google.com/apis/maps/documentation/ Javascript / overlays.html

Sie werden es nicht leicht finden, wenn Sie auf einen sehr kleinen Maßstab arbeiten (und in der Nähe des Äquators). Wikipedias Geographic-Koordinatensystem einen guten Start ist ...

Der einfachere Weg sein könnte, um die Verwendung von so etwas wie Webmapping und Stick zu machen mit Breiten und Längen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top