2011-06-21 1 views
0

Googleジオコーダサービスを使用して、ユーザーが入力した都市の座標を取得しようとしています。しかし、LatLng()オブジェクト(latlngCity)を初期化する際に問題があるようで、マップは表示されません。コードは次のとおりです。googleジオコーダサービス

var map; 
var latlngCity; 

function initialize() { 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({'address': 'Lisbon, PT'}, function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) { 
     latlngCity = results[0].geometry.location; 
     } 
    }); 


    var myMapOptions = { 
     zoom: 8, 
     center: latlngCity, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    map = new google.maps.Map(document.getElementById("map_canvas"), 
     myMapOptions); 
} 

わかりやすくするために、私は自分自身で住所の都市文字列を挿入しています。変数mapとlatlngCityはグローバルです。このコードに何か問題はありますか? ありがとうございました。

答えて

0

マップ作成コードをgeocodeコールバックに移動する必要があります(または、デフォルトの位置を使用してマップを作成し、コールバック内にマップを再配置する必要があります)。

がまだ実行されている(非同期的に)間に、latlngCityはマップ作成時には未定義です。

希望はこれが理にかなっています。それ以外の場合は、いくつかのコードを提供します。お知らせ下さい。

+0

お返事ありがとうございます。コールバックの中にマップを作成しようとしましたが、うまくいきました。ジオコーダーは正常に動作しています。しかし、マップ上にマーカーを作成することはできません。私はコールバックの中に 'var'のない地図を宣言しました。それは世界的な権利になるはずだったのですか?しかし、マーカーのオプションでマップを定義すると、決して表示されません。 –

+0

マーカーはどこに作成しますか?まったく同じ問題かもしれません。地図作成後に 'geocode'コールバックの中にマーカーを設定してみてください。 – mhyfritz

+0

それだけです!コールバック内にマーカーを作成する必要がありました。ありがとうございました。 –

関連する問題