如何让google-maps InfoWindow调整大小以适应放在其中的内容?

Tro*_*roy 6 google-maps google-maps-api-3

我一直在尝试使用Google Maps API,但是我遇到了InfoWindow的问题...它似乎总是太小而无法容纳我放在其中的内容,因此我的内容溢出InfoWindow以外的内容地图:

信息窗口

如果InfoWindow中的内容是动态的或静态的,大或小,内容周围的白框总是有点太小,似乎没有什么区别.

这是我正在测试的代码:

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
            html { height: 100% }
            body { height: 100%; margin: 0; padding: 0 }
            #map-canvas { height: 100% }
        </style>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDuV-Jyz8N6b1fVUVCa1EnbPzgeCs9J5_o&sensor=true"></script>
        <script type="text/javascript">
            var districts = [
                    {
                        name: 'Test Spot 1',
                        latitude: 29.680894,
                        longitude: -82.298584
                    },
                    {
                        name: 'Test Spot 2',
                        latitude: 28.323725,
                        longitude: -80.713806
                    }
                ],
                addDistrictMarker = function(district, map, infoWindow) {
                    var position = new google.maps.LatLng(district.latitude, district.longitude),
                        marker = new google.maps.Marker({
                            position: position,
                            map: map,
                            title: district.name
                        });
                    google.maps.event.addListener(marker, 'click', function() {
                        infoWindow.close()

                        var $infoWindowContent = $(infoWindow.content),
                            $title = $infoWindowContent.find('#title');
                        $title.html(marker.title);
                        $infoWindowContent.show();
                        infoWindow.open(map, marker);
                    });
                },
                addDistrictMarkers = function(map, infoWindow) {
                    for (var i=0; i<districts.length; i++) {
                        var district = districts[i];
                        addDistrictMarker(district, map, infoWindow);
                    }
                },
                initialize = function() {
                    var mapOptions = {
                            center: new google.maps.LatLng(27.907058,-81.44165),
                            zoom: 7
                        },
                        map = new google.maps.Map(document.getElementById("map-canvas"),
                            mapOptions),
                        $infoWindowContent = $('#info-window'),
                        infoWindow = new google.maps.InfoWindow({
                            content: $infoWindowContent.get(0)
                        });
                    addDistrictMarkers(map, infoWindow);
                }
            google.maps.event.addDomListener(window, 'load', initialize);
        </script>
    </head>
    <body>
        <div id="map-canvas"></div>
        <div id="info-window" style="display: none;">
            <h1 id="title"></h1>
            <div id="bodyContent">
                <p>A description of some sort...</p>
                <p>
                    And a link:
                    <a href="http://foo.bar.com">http://foo.bar.com</a>
                </p>
            </div>
            <div style="clear: both;"></div>
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果/当Google的代码没有自动执行时,有没有办法告诉Google代码调整InfoWindow的大小?或者我的代码中有一个愚蠢的错误,即阻止谷歌正确调整InfoWindow的大小?

Kza*_*zar 5

我结束了:

infoWindowLinea.setContent(infoWindowLinea.getContent());
Run Code Online (Sandbox Code Playgroud)

改变内容后.这迫使谷歌地图重新计算宽度和高度.


Tro*_*roy 2

我发现显式设置用作 InfoWindow 内容的 div 的“高度”CSS 样式(对我来说是“#info-window”)似乎会导致 google 的代码正确调整信息窗口的大小。

就我而言,我只是在更改 div 内容后使用 jQuery 来计算并设置“高度”样式:

$infoWindowContent.height($infoWindowContent.height());
Run Code Online (Sandbox Code Playgroud)


我仍然没有弄清楚是什么导致谷歌首先错误地调整窗口大小......动态更改内容不是原因,因为(1)静态内容有同样的问题,并且(2)谷歌正在更改窗口大小如果/当我动态更改内容时,他们只是没有对其进行足够的更改。不知何故,谷歌只是错误地计算了规模。然而,显式设置 css 高度似乎可以解决这个问题。