1

我有点困惑。我正在尝试将 Google Maps (api v.3) infoWindow 的内容加载为节点。如果我这样做并且内容很大,则不会显示预期的垂直滚动条并且内容会溢出信息窗口,这对用户来说非常混乱。

但是,如果我得到完全相同的节点并将其 html 字符串表示形式传递给它使用垂直滚动条呈现的 InfoWindow。

我创建了一个 jsfiddle 来说明它: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);
});
4

1 回答 1

2

overflow将内容节点的 parentNode的 -style 设置autodomreadyinfoWindow 的 -event 触发时:

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

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

于 2013-02-07T14:35:57.857 回答