Why Google Maps Shows the Wrong Location in China — Understanding GCJ-02 & BD-09

If you've ever opened a GPS coordinate in China and found the map pin off by hundreds of meters, you've encountered GCJ-02 — China's national coordinate obfuscation standard. Every map service inside mainland China is legally required to apply this offset, and Baidu Maps adds a second proprietary layer on top. The Coordinate Converter on fastool.io fixes these offsets instantly, but understanding why they exist and how the math works is essential for developers, GIS professionals, and anyone navigating China with GPS.

No Data StoredLocal CalculationFree to UseInstant Results
  1. Understand WGS84 — the global GPS standard

    WGS84 (World Geodetic System 1984) is the coordinate system used by GPS satellites and most international maps (Google Maps outside China, OpenStreetMap, Apple Maps). A WGS84 coordinate like (39.9042, 116.4074) places you at Tiananmen Square. WGS84 is accurate to within a few meters globally and is the 'truth' reference — every other coordinate system discussed here is a deliberate distortion of WGS84.

  2. Apply the GCJ-02 (Mars Coordinates) offset

    Under Chinese law (the Surveying and Mapping Law), all digital maps published within mainland China must use GCJ-02, which applies a non-linear, location-dependent offset to WGS84 coordinates. The offset ranges from 100-700 meters and varies by location. A WGS84 coordinate of (39.9042, 116.4074) might become approximately (39.9085, 116.4121) in GCJ-02 — shifting the pin ~500 meters east. This is why your GPS track in China appears to wander off roads when overlaid on a Chinese map service. The Coordinate Converter on fastool.io uses the standardized reverse-transform algorithm to correct this for any point in China.

  3. Convert between GCJ-02 and BD-09 for Baidu Maps

    Baidu Maps applies an additional proprietary encryption on top of GCJ-02, called BD-09. A GCJ-02 coordinate is further offset — typically another 50-150 meters — to produce the BD-09 coordinate Baidu's API accepts. If you're building an app that displays coordinates inside China, the conversion chain is: GPS reading (WGS84) → GCJ-02 (for Gaode/Amap, Tencent Maps) → BD-09 (for Baidu Maps). The fastool.io Coordinate Converter handles all three directions in both forward and reverse with a single click.

FAQ

Why does China use GCJ-02 instead of WGS84?
China's 2002 Surveying and Mapping Law requires all domestic map services to apply coordinate obfuscation for national security reasons. GCJ-02 (colloquially called 'Mars Coordinates') is the mandated standard. International services like Google Maps must apply GCJ-02 when displaying maps within China's borders. Outside mainland China, Google Maps uses standard WGS84 — which is why the same coordinates appear in different locations depending on whether you're viewing from inside or outside China.
Does the GPS offset affect apps like WeChat or DiDi?
Yes — all domestic Chinese apps use GCJ-02 or BD-09 internally. When you share a location pin from WeChat (which uses GCJ-02) and your friend opens it on Google Maps outside China (which uses WGS84), the pin will be 100-700 meters off. The fastool.io Coordinate Converter fixes this: select GCJ-02 → WGS84, enter the WeChat coordinates, and get the correct WGS84 location for external maps.
Can I bypass the offset by using satellite imagery?
No — satellite imagery tiles served by Chinese map providers (Baidu, Gaode, Tencent) are also aligned to GCJ-02, meaning the imagery itself is shifted. If you overlay raw GPS tracks on GCJ-02 satellite imagery, your track will appear to run through buildings. The only reliable approach is to convert your coordinates before mapping: GPS (WGS84) → GCJ-02 for Chinese map overlay, or GCJ-02 → WGS84 to export Chinese-map coordinates to international tools.

References

  1. [1]Wikipedia — Restrictions on Geographic Data in China (GCJ-02 origin)Wikipedia
  2. [2]Baidu Maps Open Platform — BD09 Coordinate SystemBaidu Maps