2011-06-21 40 views
0

我正在嘗試使用Google geocoder服務來獲取用戶輸入的城市座標。然而,看起來像初始化LatLng()對象(latlngCity)時出現了一些問題,並且地圖不會顯示出來。代碼如下:谷歌地理編碼服務

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在映射創建時未定義,而geocode仍在執行(異步)。

希望這是有道理的。否則,我會提供一些代碼。讓我知道。

+0

感謝您的回覆。我試圖在回調中創建地圖,它工作。地理編碼器現在工作正常。但是,我現在無法在地圖上創建標記。我在回調中聲明瞭沒有'var'的地圖。它應該成爲全球性的權利?但是當我在標記的選項中定義地圖時,它永遠不會顯示出來。 –

+0

你在哪裏創建標記?它可能是完全相同的問題 - 嘗試在地圖創建後在'geocode'回調中設置標記。 – mhyfritz

+0

就是這樣!我不得不在回調中創建標記。再次感謝你。 –