Umwandlung von long/lat zu pixel-x/y, gegeben eine zoom-Ebene
Ich versuche zu entwickeln, die eine Seite in ASP.NET wird die als tile-server für eine Google-Karte
Wird es ziehen Sie eine Sammlung von Breitengrad/Längengrad der Punkte aus der Datenbank, dann machen Sie als kleine rote Punkte auf einem transparenten hintergrund, eine zoom-Ebene (Voreinstellung: 15).
Wird es dann wieder das Ergebnis als GIF-Bild.
Irgendwelche algorithmen oder Bibliotheken entwickelt worden, die mir erlauben, zu diesem Satz von breiten/Längen-und konvertieren Sie Sie in ein set von 2D-pixel-Koordinaten, gegeben eine zoom-Stufe?
(Dies alles geschieht auf server-Seite, so kann ich nicht verwenden die Google Maps API.)
Update: Gefunden ein code-Beispiel in Perl, das etwas ähnliches macht:
http://blog.barros.ws/2009/03/06/convert-lat-lng-and-zoom-values-to-pixel-xy-on-a-map/
Problem ist, ich weiß nicht, Perl, und haben nicht wirklich die Zeit zu knacken öffnen Sie ein Buch und Lerne es.
Kann mir jemand helfen zu entziffern, was Los ist in dieser Funktion?
sub Google_Coord_to_Pix
{
my $value = shift ;
my $lat = shift ;
my $lng = shift ;
my @d = ( ) ;
my $e = 0 ;
$d[1] = sprintf("%0.0f", $$value{'bmO'} + $lng * $$value{'pixLngDeg'} ) ;
$e = sin($lat * $$value{'Wa'}) ;
if( $e > 0.99999 )
{
$e = 0.99999 ;
}
if( $e < -0.99999 )
{
$e = -0.99999 ;
}
$d[0] = sprintf("%0.0f", $$value{'bmO'} + 0.5 * log((1 + $e) / (1 - $e)) * (-1) * $$value{'pixLngRad'} ) ;
return (@d) ;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Wenn es ist eine Mercator-Projektion, Sie sollten nicht brauchen, um über die Krümmung der Erde, da alle von der lat/lon-Leitungen sind an gleicher Abstand"
Vielleicht denken Sie an die Geografische (aka Plate Carree), Projektion? Die Mercator-Projektion hat äquidistante Linien der Länge, aber nicht nicht haben äquidistante Linien der Breitengrade (lat = atan(sinh(y)), also 90°, bei unendlich).
BTW, die Mathematik für die Mercator-Projektion auf eine Kugel, ist hier, aber wenn Google Maps mit den WGS84-ellipsoid, und Sie müssen, um es zu bekommen genau wird es komplizierter. In diesem Fall würde ich schauen,diese, aber Vorsicht: es ist nicht für das schwache des Herzens.
Hier ist etwas code, den ich bin derzeit mit. Es ist in PHP.
Basierend auf code von auf dieser Seite, geschrieben von dieser Kerl.
Glück!
Update: Diese Karte ist ein guter Weg, um helfen zu verstehen, wie die Fliesen Arbeit in Google Maps
Edit: Hier ist eine entsprechende Reihe von Funktionen in VB.NET:
Und in C#: