2011-04-01 67 views
3

我有一個程序,需要在一個郵政編碼,並使谷歌地圖。 div地圖設置爲hidden,直到地圖製作完畢。地圖製作完成後,div設置爲display : block。問題是,第一次在地圖生成(且僅第一次),它看起來像這樣: enter image description here谷歌地圖生成不正確

一旦我打的找商店按鈕再次,它看起來是這樣的:

enter image description here

我已經試圖對地圖方法進行初始調用(我一直隱藏,直到發出真正的呼叫),但這並沒有解決問題。我不想顯示我的所有代碼(有很多),但是這裏是我如何製作地圖。

<div id = "map_canvas" style = " height: 300px; width: 300px;"></div> 

//Creates a new center location for the google map 
var latlng = new google.maps.LatLng(lat, lng); 

//The options for the google map 
var mapOptions = { 
    zoom: 7, 
    maxZoom: 12, 
    center: latlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

//Creates the new map 
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

另外請注意,下面兩個圖像都在正確的位置正確的標記。

有什麼建議嗎?

回答

6

這是一個常見問題。您需要在更改容器後觸發地圖重繪。大部分時間這是由顯示/隱藏div引起的。

在V3是:

google.maps.event.trigger(map, 'resize') 

在V2是:

map.checkResize() 
0

它看起來像初始化地圖時,它完全縮小了,它帶出了谷歌使用的單個250x250拼貼。

+0

爲什麼會是雖然縮小?我有一個縮放和最大縮放設置 – 2011-04-01 20:15:09

0

我會懷疑您的第一個「查找商店」按鈕單擊可能會出現錯誤,可能會阻止地圖創建代碼被正常訪問和執行。

+0

我認爲是這樣,但如果這是按鈕的問題,那麼我不會在每隔一段時間都有問題,而不僅僅是最初的調用? – 2011-04-01 20:16:06