title: How can I get latitude, longitude from x, y on a Mercator map (JPEG)?
body: <p>I have a Mercator projection map as a JPEG and I would like to know how to relate a given x, y coordinate to its latitude and longitude.  I've looked at the Gudermannian function but I honestly don't understand how to take that function and apply it.  Namely, what input is it expecting?  The implementation I found (JavaScript) seems to take a range between -PI and PI, but what's the correlation between my y-value in pixels and that range?</p>
  
  <p>Also, I found this function which takes a latitude and returns the tile for Google Maps, which also uses Mercator.  It would seem that if I knew how to inverse this function, I'd be pretty close to having my answer.</p>
  
  <pre><code>/*&lt;summary&gt;Get the vertical tile number from a latitude
  using Mercator projection formula&lt;/summary&gt;*/
  
      private int getMercatorLatitude(double lati)
      {
          double maxlat = Math.PI;
  
          double lat = lati;
  
          if (lat &gt; 90) lat = lat - 180;
          if (lat &lt; -90) lat = lat + 180;
  
          // conversion degre=&gt;radians
          double phi = Math.PI * lat / 180;
  
          double res;
          //double temp = Math.Tan(Math.PI / 4 - phi / 2);
          //res = Math.Log(temp);
          res = 0.5 * Math.Log((1 + Math.Sin(phi)) / (1 - Math.Sin(phi)));
          double maxTileY = Math.Pow(2, zoom);
          int result = (int)(((1 - res / maxlat) / 2) * (maxTileY));
  
          return (result);
      }
  </code></pre>