Convertir largo / lat a píxel x / y, dado un nivel de zoom

Estoy tratando de desarrollar una página en ASP.NET que actuará como un servidor de mosaico para un mapa de Google

Recogerá una colección de puntos de latitud / longitud de la base de datos y luego los mostrará como pequeños puntos rojos sobre un fondo transparente, dado un nivel de zoom (valor predeterminado: 15).

Luego devolverá el resultado como una imagen de tipo GIF.

¿Se han desarrollado algoritmos o bibliotecas que me permitan tomar este conjunto de latitudes / longitudes y convertirlas en un conjunto de coordenadas de píxeles 2D, dado un nivel de zoom?

(Todo esto se hace en el lado del servidor, por lo que no puedo usar la API de Google Maps).

Actualización: Encontré un ejemplo de código en Perl que hace algo similar:

http://blog.barros.ws/2009/03/06/convert-lat-lng-and-zoom-values-to-pixel-xy-on-a-map/

El problema es que no conozco a Perl, y realmente no tengo tiempo para abrir un libro y aprenderlo.

¿Alguien puede ayudarme a descifrar qué está pasando en esta función?

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) ;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta