0

重複の可能性:
google.maps.Geocoder.geocode() geometry.location lat/lng プロパティ名は頻繁に変更されます

アプリケーションで Google マップ 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 日に変更されたため、このコードは緯度と経度の情報を取得できなくなりました。

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();

しかし、変数の名前を変更し続けるのはおかしいですか? これは 10 月 22 日に発生し、現在は再び変更されています。誰かが以前に同様の問題を抱えていたかどうか疑問に思っていますか?最新バージョンを使用する必要がないように、バージョン番号付きの Google マップ v3 javascript URL はありますか? 前もって感謝します。

4

2 に答える 2

0

次の方法でGoogleAPIをロードします。

<!--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

于 2012-11-22T17:28:03.517 に答える
0

なぜ内部変数にアクセスしたいのか不思議です。Google Maps API の Javascript ライブラリは、同じバージョンであっても Google によって変更されます。そして、コードをコンパイルします。私が思うGoogleクロージャーコンパイラーであるコンパイラーは、ユーザーが「Optimization = Advanced」を指定するたびにランダム化された変数名を作成します。

コンパイラの動作を理解するには、こちらで 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();

"Optimization=Simple" を指定すると、次のようになります。

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();

ただし、「Optimization=Advanced」を指定すると、次のようになります。

var a=new function(){this.a="Hello"};alert(a.a+" world");alert(a.a);

拡張モードでは、コンパイラは変数名を自動的に変更します。そのため、内部変数名は常に変更されます。

于 2012-11-22T17:48:21.273 に答える