2013-02-07 33 views
1

我有點困惑。我正在嘗試將Google地圖(api v.3)infoWindow的內容作爲節點加載。如果我這樣做,並且內容很大,預期的垂直滾動條不會顯示,並且內容會溢出infowindow,這對用戶來說非常混亂。谷歌地圖Infowindow如果內容通過節點或字符串傳遞,呈現不同內容

但是,如果我得到完全相同的節點並將它的html字符串表示形式傳遞給它使用垂直滾動條呈現的InfoWindow。

我創建了一個對的jsfiddle它ilustrate:http://jsfiddle.net/vEBUv/5/

這是預期的行爲?

感謝您的任何建議

PS:我需要將內容傳遞的節點,因爲我想繼續參考DOM元素

代碼中的jsfiddle:

var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
var mapOptions = { 
    zoom: 4, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); 
var mapNode = new google.maps.Map(document.getElementById('map_canvas_node'), mapOptions); 

var contentNode = $('#infoWindowContent')[0]; 
var contentString = $('#infoWindowContent').parent().html(); 

var infowindow = new google.maps.InfoWindow({ 
    content: contentString 
}); 

var infowindowNode = new google.maps.InfoWindow({ 
    content: contentNode 
}); 

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Test Content as String' 
}); 

var markerNode = new google.maps.Marker({ 
    position: myLatlng, 
    map: mapNode, 
    title: 'Test Content as Node' 
}); 

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.open(map,marker); 
}); 
google.maps.event.addListener(markerNode, 'click', function() { 
    infowindowNode.open(mapNode,markerNode); 
}); 

回答

2

設置overflow - 內容節點的parentNode的樣式爲auto,當domready - infoWindow事件發生時:

google.maps.event.addListener(infowindowNode,'domready',function(){ 
    this.getContent().parentNode.style.overflow='auto'; 
}); 

http://jsfiddle.net/doktormolle/7HdKt/

+0

感謝Dr.Molle,我已經測試的節點本身的風格每個組合,但並沒有與其父tyied。現在它按預期工作! – JMart