私は少し混乱しています。Google Maps (api v.3) infoWindow のコンテンツをノードとして読み込もうとしています。コンテンツが大きい場合、予想される垂直スクロール バーが表示されず、コンテンツが情報ウィンドウからはみ出し、ユーザーが非常に混乱します。
ただし、まったく同じノードを取得し、その html 文字列表現を InfoWindow に渡すと、垂直スクロール バーでレンダリングされます。
それを説明するために jsfiddle を作成しました: http://jsfiddle.net/vEBUv/5/
これは予想される動作ですか?
提案をありがとう
ps: DOM 要素への参照を維持したいので、コンテンツを Node として渡す必要があります
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);
});