Ich habe ein JAVA-Projekt mit Google Static Maps und nach stundenlanger Arbeit kann ich nichts erreichen, ich werde alles erklären und ich hoffe, dass mir jemand helfen kann.
Ich verwende eine statische Karte (480 Pixel x 480 Pixel), die Mitte der Karte ist lat = 47, lon = 1.5 und die Zoomstufe ist 5.
Jetzt brauche ich lat und lon, wenn ich auf ein Pixel auf dieser statischen Karte klicke. Nach einigen Suchen fand ich, dass ich Mercator Projection verwenden sollte (richtig?), Ich fand auch, dass jeder Zoom-Level die Genauigkeit sowohl in horizontalen als auch in vertikalen Dimensionen verdoppelt, aber ich finde nicht die richtige Formel, um Pixel, Zoom-Level und Lat zu verknüpfen / lon ...
Mein Problem besteht nur darin, lat / lon aus dem Pixel zu bekommen, die Koordinaten und die Zoomstufe des Centers zu kennen ...
Vielen Dank im Voraus!
Verwenden Sie die Mercator-Projektion.
Wenn Sie in ein Leerzeichen von [0, 256)
by [0,256]
projizieren:
Bei Zoomstufe 5 entsprechen diese Pixelkoordinaten:
%Vor%Daher befindet sich der obere linke Teil Ihrer Karte wie folgt:
%Vor%Schließlich:
%Vor%Google-Maps verwendet Kacheln für die Karte, um die Welt effizient in ein Raster von 256 x 21 Pixel-Kacheln zu unterteilen. Grundsätzlich besteht die Welt aus 4 Kacheln im niedrigsten Zoom. Wenn Sie anfangen zu zoomen, erhalten Sie 16 Kacheln und dann 64 Kacheln und dann 256 Kacheln. Es ist im Grunde ein Quadtree. Da eine solche 1d-Struktur nur eine 2d abflachen kann, benötigen Sie auch eine Mercantor-Projektion oder eine Konvertierung nach WGS 84. Hier ist eine gute Ressource Konvertiere long / lat in Pixel x / y auf einem bestimmten Bild . Es gibt Funktionen in Google Maps, die von Lat-Long-Paar zu Pixel konvertieren. Hier ist ein Link, aber er sagt, dass die Kacheln nur 128x128 sind: Ссылка .
Basierend auf der Mathematik in Chris Broadfoot Antwort oben und einige anderer Code auf Stack Overflow für die Mercator Projection , habe ich diesen
%Vor%Hier ist ein Komponententest für die ursprüngliche Antwort
%Vor%Wenn Sie (sagen wir) mit der Luftfotografie arbeiten, habe ich den Eindruck, dass der Algorithmus die Dehnungswirkung der Mercator-Projektion nicht berücksichtigt, so dass er die Genauigkeit verlieren könnte, wenn Ihr Interessengebiet nicht in der Nähe ist Der Equator. Ich schätze, Sie könnten es annähern, indem Sie Ihre x-Koordinaten mit cos (Breitengrad) des Zentrums multiplizieren?
Es scheint erwähnenswert, dass Sie tatsächlich die Google Maps API haben können, die Ihnen den Breitengrad & amp; longitudinale Koordinaten von Pixelkoordinaten.
Obwohl es in V3 ein wenig verworren ist, hier ist ein Beispiel dafür, wie es geht.
(HINWEIS: Angenommen, Sie haben bereits eine Karte und die Pixelscheitelpunkte, die in eine Koordinatenkoordinate umgewandelt werden sollen):
Ich hoffe, dass es jemandem hilft.
UPDATE: Ich habe festgestellt, dass ich dies auf zwei Arten gemacht habe, beide benutzen immer noch die gleiche Art, das Overlay zu erstellen (also werde ich diesen Code nicht kopieren).
%Vor%Tags und Links java google-maps google-maps-api-2