[GIS] Wherer is wrong with transforming a WGS84 [lon,lat] point onto google maps

coordinate systemgoogle maps

I want to convert a longitude latitude point in WGS84 coordinate system to Google Maps(not google earth) coordinate, But when I put the converted point on google map, it always has a roughly 10km offset(moved to south) on y axis.

First correct me if my understanding is wrong with the two projections:

Google Maps:
    spheroid parameters: a = b = 6378137
    projection: Mercator;
    To WGS84 Datum offset: no, (means 0,0,0) 

WGS84:
    spheroid parameters: a = 6378137;b=6356752.314
    projection: WGS84;(like no projection, the coordinate is just longitude and latitude)

What I did:

Convert the WGS84 longitude, latitude(we call it point1) to geocentric coordinate(point2) with WGS84's spheroid;
//because no datum offset between Google Maps and WGS84, no need to convert point2 to Google Maps' geocentric 
Convert point2 to geodentic coordinate(point3) with Google map's spheroid
Project point3 with Mercator projection into meter coordinate(point4).
Linearly transform point4 onto google maps.

On internet everybody is saying that Google Maps' projection is 'EPSG:3857' which means a and b are the same 6378137, but if I just use standard WGS84's spheroid parameters, which means a and b are different, the whole process is always correct, the result is very accurate.

Best Answer

The coordinate systems you mentioned, WGS 1984 and WGS84 Web Mercator (Auxiliary Sphere) (EPSG:3857), use the same spheroid and datum with parameters you written for WGS84. The semiminor and semimajor axis are not the same. Maybe that is the source of the error. See the description of the EPSG:3857 spatial reference.