La conversion de long/lat pixels x/y, étant donné un niveau de zoom
Je suis en train de développer une page dans ASP.NET qui va agir comme un carreau de serveur pour une Carte Google
Il va tirer une collection de latitude/longitude des points de la base de données, puis de les rendre comme des petits points rouges sur un fond transparent, compte tenu d'un niveau de zoom (par défaut: 15).
Puis, il retournera le résultat sous forme de GIF-type de l'image.
Avez des algorithmes ou des bibliothèques été développé qui me permettent de prendre cet ensemble de latitudes/longitudes et de les convertir en un ensemble de 2D pixel de coordonnées, étant donné un niveau de zoom?
(Cela est fait côté serveur, donc je ne peux pas utiliser l'API Google Maps.)
Mise à jour: vous avez Trouvé un code de l'échantillon en Perl qui fait quelque chose de similaire:
http://blog.barros.ws/2009/03/06/convert-lat-lng-and-zoom-values-to-pixel-xy-on-a-map/
Problème est que je ne sais pas Perl, et ne pas vraiment avoir le temps d'ouvrir un livre et de l'apprendre.
Quelqu'un peut m'aider à déchiffrer ce qui se passe dans cette fonction?
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) ;
}
OriginalL'auteur Jonathan | 2009-10-20
Vous devez vous connecter pour publier un commentaire.
"Si c'est une projection de Mercator, vous ne devriez pas avoir à vous soucier de la courbure de la terre depuis toutes les coordonnées lat/lon lignes sont à égalité espacement"
Vous êtes peut-être la pensée de la zone Géographique (aka Plaque Carree) projection? La projection de Mercator ne sont équidistants des lignes de longitude, mais ne pas ont également espacés lignes de latitude (lat = atan(sinh(y)), donc 90° est à l'infini).
BTW, les maths pour la projection de Mercator sur une sphère est ici, mais si Google Maps est l'aide de l'ellipsoïde WGS84 et vous avez besoin pour l'obtenir c'est exact, cela devient plus compliqué. Dans ce cas, je regarderais cette, mais méfiez-vous: ce n'est pas pour les faibles de cœur.
OriginalL'auteur lguy
Voici un code que j'utilise actuellement. C'est dans le PHP.
Basé sur le code de cette page, écrit par ce mec.
Bonne chance!
Mise à jour: Cette carte est un excellent moyen pour aider à comprendre comment les carreaux de travail dans Google Maps
Edit: Voici un ensemble équivalent de fonctions dans VB.NET:
Et en C#:
OriginalL'auteur Chris B