谷歌地图v3 Geocoder向后兼容

时间:2012-11-22 17:23:21

标签: javascript google-maps-api-3

  

可能重复:
  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网址,以便我不需要使用最新版本?提前谢谢。

2 个答案:

答案 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(您可以看到开/关按钮以启用您需要的服务)

https://code.google.com/apis/console

答案 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);

在高级模式下,编译器会自动更改变量名称。 这就是内部变量名称总是被改变的原因。