Google gets the mapping data from China. The Chinese government supplies that data with offsets that vary across the country. The offset information is not available to anyone other than a few certified Chinese mapping companies, and certainly not to any foreign entity. All maps based on that data, which includes, Google, Microsoft, etc, show identical offsets. The only maps that are not affected are satellite images from Google (and maybe also from ArcGIS; I haven't checked), and OSM. OSM is correct because it's not under the control of the Chinese government, but that means even having it on your phone in China is illegal. I personally couldn't care less about that (just don't stand next to a police officer and play with the mapping on your phone!), but OSM maps have so little information they are essentially useless outside the major cities. The one thing I can think of that is a viable, if not ideal, solution, is to allow maps to be offset by the user. That offset could be figured out using the crude OSM maps or satellite images before even going to the specific location. Since it varies by location, it would be almost essential that the offsets could be stored, and recalled later. Allowing for such user defined offsets would also fix a couple of issues unrelated to China: //http://forum.asamm.cz/viewtopic.php?f=10&t=659&p=3968&hilit=beijing#p3968