10

次のコードを使用して、住所で緯度と経度を取得しようとしています。

 function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    geocoder = new google.maps.Geocoder();
    var address = "HaYarkon 100 TelAviv Israel";
    geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK)
       {
            TelAviv = new google.maps.LatLng(results[0].geometry.location.latitude,results[0].geometry.location.longitude);             
       }
    });

    var myOptions = {
        zoom:7,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: TelAviv
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
}

問題は、results[0].geomety.location.latitude と経度が定義されていないことです。

コンソールの結果に表示されるのは次のとおりです。

 location: O

   $a: 51.5414691

   ab: -0.11492010000006303

緯度と経度の代わりに $a と ab が表示されるのはなぜですか

4

2 に答える 2

21

プロパティに直接アクセスする代わりに、次の関数を使用します。

results[0].geometry.location.lat()

results[0].geometry.location.lng()

Googleコードは難読化されており、内部的には、ある日から別の日に変更される可能性のある短い変数名を使用しています。

于 2012-05-07T12:26:52.733 に答える
1

使用する必要があります

results[0].geometry.location.lat()
results[0].geometry.location.lng()

使用する

results[0].geometry.location[0]
results[0].geometry.location[1]

未定義を返します。

API は「ab」という名前のフィールドを返したり、「Za」という名前のフィールドを返したりするため、これは非常に混乱しました。正確な文字列名ではなく、セマンティック値 (.lat および .lng を使用) で要素にアクセスする方が、はるかに安全で読みやすいです。

于 2012-07-25T16:06:01.727 に答える