Google Maps Geocoder に住所から LatLng を返させ、その LatLng を中心にして地図を初期化しようとしています。
このトピックに関するいくつかの質問を見て、マップを最初に任意の中心で初期化してから再センタリングする必要があるという提案がありましたが、それは無駄に思えます。
以下のコードは、グローバルな緯度と経度をゼロに変更するまで正常に機能します。次に、geocder がアドレスで呼び出され、LatLng が正常に返されます。その後、空白のウィンドウが表示され、初期化関数のアラートがトリガーされることはありません。
0,0 で初期化してからセンタリングするルートに進む前に、これが機能しない理由を誰かが説明できますか?
ありがとう
var lat = 37.425593;
var lon = -122.075915;
var address = '1600 Amphitheatre Pky, Mountain View, CA';
var LatLon = new google.maps.LatLng(0, 0);
function initialize() {
alert("2. "+LatLon);
var mapOptions = {
center: LatLon,
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: LatLon,
map: map
});
}
if (lat == 0 && lon == 0) {
alert('address = '+address);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
LatLon = results[0].geometry.location;
alert("1. "+LatLon);
google.maps.event.addDomListener(window, 'load', initialize);
} else {
alert("No results found");
}
} else {
alert("Geocoder failed: " + status);
}
});
} else {
alert('lat/lon = '+lat+' '+lon);
LatLon = new google.maps.LatLng(lat, lon);
alert("1. "+LatLon);
google.maps.event.addDomListener(window, 'load', initialize);
}