2014-03-26 20 views
0

我正在使用顯示爲對話框的Google地圖,此控件多次動態添加到頁面。現在當我第一次打開地圖時,它顯示正常,我可以選擇一個位置並使用它等。但是當我再次打開地圖時,地圖部分顯示在左上角。爲什麼這會發生谷歌地圖API第二次調用時未裝滿

function Initialize(id) { 
    if (!map) { 
     var Utrecht = new google.maps.LatLng(52.071065, 5.111389); 
     var myOptions = 
     { 
      zoom: 8, 
      center: Utrecht 
      , mapTypeId: google.maps.MapTypeId.ROADMAP 
      , draggableCursor: 'crosshair' 
      , streetViewControl: false 
      , panControl: false 
     }; 
     var mapDiv = $('#ContentPlaceHolderBody_mapsCtrl' + id + '_map' + id); 
     map = new google.maps.Map(mapDiv[0], myOptions); 
    } 
    else 
    { 
     google.maps.event.clearListeners(map); 
    } 
    google.maps.event.addListener(map, 'click', function (event) { 
     position = event.latLng; 
     CallServer('loc:' + event.latLng.toUrlValue(), ""); 
    }); 
} 

編輯任何幫助 - 我這是怎麼顯示在關閉對話框之前,並在初始化函數的其他部分地圖

$('#ContentPlaceHolderBody_mapsCtrl' + id + '_mapDiv' + id).dialog({ 
      autoOpen: false, 
      dialogClass: "no-close", 
      position: { 
       my: "center", 
       at: "center", 
       of: window 
      }, 
      width: 800, 
      height: 600, 
      open: Initialize(id) 

     }); 
    $('#ContentPlaceHolderBody_mapsCtrl' + id + '_mapDiv' + id).dialog("open"); 
    AutoResizeFrame(); 
+0

該對話框的實現將是有趣的 –

回答

0

調用google.maps.event.clearListeners(window, 'resize');對話框現在工作所有時間我都會顯示地圖。

else 
{ 
    google.maps.event.clearListeners(map); 
    google.maps.event.clearListeners(window, 'resize'); 
}