Google地图加密算法

几个月前因为公司的项目需要从谷歌地图抓取商户坐标,因此我花费了一个周末把谷歌地图中的地图坐标加密算法搞了出来。现在把这个算法共享出来,如果侵犯到任何人的权益,请与博主联系删除此博文。

解密算法

Google地图使用非常复杂的算法把经纬度加密为长整数,如下为破解后的解密算法。

1
2
3
4
5
6
7
var id = "34071021666017214025";  

var x = 256 * parseInt(id.substr(0, 7), 10) + parseInt(id.substr(14, 3), 10);
var y = 256 * parseInt(id.substr(7, 7), 10) + parseInt(id.substr(17, 3), 10);

var lat = (2*Math.atan(Math.exp((y-536870912) / -170891318.8941079)) - 3.141592653589793 / 2) / (3.141592653589793 / 180);
var lng = (x - 536870912)/2982616.177777778;

34071021666017214025解密后的经纬度即为:

1
34.671539953447784, 112.4339821189642