4

我正在使用谷歌地图来查找点击位置的纬度和经度。在将javascript事件对象字符串化后,我发现

{"latLng":{"Za":25.800813110356653,"$a":78.7055234375},"pixel":{"x":689,"y":336},"va":{"x":183.96837222222223,"y":108.99927181860028}}

所以 Za 是 lat 而 $a 现在是 lng。

虽然两天前,我使用完全相同的代码并获得相同的对象:

{"latLng":{"Ya":25.800813110356653,"Za":78.7055234375},"pixel":{"x":689,"y":336},"va":{"x":183.96837222222223,"y":108.99927181860028}}

困扰我的是他们一夜之间更改了对象名称。他们为什么要这样做,是否有任何可靠的方法来查找纬度和经度?

4

3 回答 3

12

内部名称将随着代码更改而更改:如果引入另一个令牌,那么一个被缩小的变量最终Ya可能是Za.

永远不应该访问内部引用。始终使用记录在案的方法。

于 2012-04-18T15:16:41.170 回答
5

好的。我已经部分找到了答案。

我们不需要打扰名称。我们可以使用函数来代替。

lat = e.latLng.lat();
lon = e.latLng.lng();
于 2012-04-18T14:32:06.613 回答
4

Google 不会更改已发布方法的名称。但是,每当部署更新时,地图脚本文件都会通过一个混淆过程运行,该过程将代码中熟悉的名称减少为您尝试引用的短名称。每次对代码进行混淆时,结果都可能不同。正如 Andrew 在上面指出的,如果引入了新方法或变量,则可以摆脱之前的混淆顺序。(他们甚至可能会定期运行此过程,以防止人们像您在上面所做的那样访问内部成员)。

http://en.wikipedia.org/wiki/Obfuscation_%28software%29

于 2012-04-18T20:46:50.533 回答