可能重复:
google.maps.Geocoder.geocode() geometry.location lat/lng property names change frequently
我在我的应用程序中使用Google Map v3及其地理编码器api。我用这个url来引用api: http://maps.google.com/maps/api/js?key=key&sensor=false
以下代码过去非常有效:
geocoder.geocode(
{'address': address }, function(data, status)
{
var lat = data[0].geometry.location.Ya;
var lng = data[0].geometry.location.Za;
});
但是自从api在11月18日发生变化以来,这段代码再也无法得到lat和lng信息:
var lat = data[0].geometry.location.Ya;
var lng = data[0].geometry.location.Za;
我需要使用:
var lat = data[0].geometry.location.$a;
var lng = data[0].geometry.location.ab;
我知道问题可以通过以下方式解决:
var latlng = data[0].geometry.location;
var lat = latlng.lng();
var lng = latlng.lat();
但是,继续更改变量的名称是否已经过时了?这发生在十月二十二日,现在再次改变。我只是想知道以前是否有人遇到过类似的问题?是否有版本号的Google Map v3 javascript网址,以便我不需要使用最新版本?提前谢谢。
答案 0 :(得分:0)
通过以下方式加载Google API:
<!--load Google API-->
<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
然后转到API控制台,创建新项目并启用所需的Google API,在您的情况下使用Gmaps V3 api(您可以看到开/关按钮以启用您需要的服务)
答案 1 :(得分:0)
我很奇怪为什么要访问内部变量。 Google会更改Google Maps API的Javascript库,即使版本相同。 他们编译代码。我认为编译器是谷歌闭包编译器,每当用户指定“优化=高级”时,就会生成随机变量名。
要了解编译器行为,可以在此处尝试Closure Compiler。 http://closure-compiler.appspot.com/home
这是一个示例代码。
function MyFunc(prefix) {
this.prefix_ = prefix;
}
MyFunc.prototype.helloWorld = function() {
alert(this.prefix_ + " world");
};
MyFunc.prototype.sayHello = function() {
alert(this.prefix_);
};
var myFunc = new MyFunc("Hello");
myFunc.helloWorld();
myFunc.sayHello();
当你指定“优化=简单”时,你会这样:
function MyFunc(a){this.prefix_=a}MyFunc.prototype.helloWorld=function(){alert(this.prefix_+" world")};MyFunc.prototype.sayHello=function(){alert(this.prefix_)};var myFunc=new MyFunc("Hello");myFunc.helloWorld();myFunc.sayHello();
但是如果你指定“优化=高级”,你就会这样:
var a=new function(){this.a="Hello"};alert(a.a+" world");alert(a.a);
在高级模式下,编译器会自动更改变量名称。 这就是内部变量名称总是被改变的原因。