Google maps api 3 谷歌地图信息气泡窗口既不关闭也不重新居中地图

Google maps api 3 谷歌地图信息气泡窗口既不关闭也不重新居中地图,google-maps-api-3,Google Maps Api 3,我有一个成功的通用汽车原型使用InfoBubble 当我打开每个新的InfoBubble窗口时,我需要地图重新居中 地图在关闭每个信息气泡时重新居中,因为我调用[第238行等]: google.maps.event.addListener(infoBubble, "closeclick", function () 第二,为什么美国洛杉矶西海岸的洛杉矶InfoBubble没有像其他地方一样关闭最近的InfoBubble窗口 提前非常感谢您的建议;我知道这一定很简单,但我也花了很多时间搜索S/O

我有一个成功的通用汽车原型使用InfoBubble

当我打开每个新的InfoBubble窗口时,我需要地图重新居中

地图在关闭每个信息气泡时重新居中,因为我调用[第238行等]:

google.maps.event.addListener(infoBubble, "closeclick", function ()
第二,为什么美国洛杉矶西海岸的洛杉矶InfoBubble没有像其他地方一样关闭最近的InfoBubble窗口

提前非常感谢您的建议;我知道这一定很简单,但我也花了很多时间搜索S/O

javascript:

    $(document).ready(function () { initialize();  });
    var myLatlng = new google.maps.LatLng(51.30, 0.7);
    function initialize() {
        google.maps.Map.prototype.setCenterWithOffset = function(LatLng, offsetX, offsetY) {
            var map = this;
            var ov = new google.maps.OverlayView();
            ov.onAdd = function() {
                var proj = this.getProjection();
                var aPoint = proj.fromLatLngToContainerPixel(LatLng);
                aPoint.x = aPoint.x+offsetX;
                aPoint.y = aPoint.y+offsetY;
                map.setCenter(proj.fromContainerPixelToLatLng(aPoint));
            }; 
            ov.draw = function() {}; 
            ov.setMap(this); 
        };
        var centerMap = new google.maps.LatLng(51.30, 0.7);
        var mapOptions = {
            zoom: 2,
            disableDefaultUI: true,
            scrollwheel: false,
            navigationControl: false,
            mapTypeControl: false,
            scaleControl: false,
            draggable: false,
            center: centerMap,
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
        map.setCenterWithOffset(myLatlng, 50, 225);
        setMarkers(map, sites);
        google.maps.event.addListener(infoBubble, "closeclick", function () {
            map.setCenterWithOffset(myLatlng, 50, 225);
        });
        google.maps.event.addListener(infoBubbleLA, "closeclick", function () {
            map.setCenterWithOffset(myLatlng, 50, 225);
        });
    };

    var infoBubble = new InfoBubble({
        maxWidth: 400,
    });

    var infoBubbleLA = new InfoBubble({
        maxWidth: 400,
    });

 // locationstrings start
    var losangeles1 = 'losangeles1';
    var losangeles2 = 'losangeles2';
    var losangeles3 = 'losangeles3';
    var losangeles4 = 'losangeles4';
    var losangelescontentString ='losangelescontentString';
    var portonovocontentstring ='Porto Novo';
    var shackletoncontentstring = 'Shackleton';
    var florencecontentstring = 'Florence';
    var buenosairescontentstring = 'Buenos Aires';
    var jodhpurcontentstring = 'Jodhpur';
    var mtsinaicontentstring = 'Mt Sainai';
    var neworleanscontentstring = 'New Orleans';
    var pariscontentstring='Paris';

 // locationstrings end

    infoBubbleLA.addTab('Electronic Cataloguing Initiative', losangeles1);
    infoBubbleLA.addTab('Getty Leadership Institute at Claremont Graduate University', losangeles2);
    infoBubbleLA.addTab('Tab 3', losangeles3);
    infoBubbleLA.addTab('Preserve L.A.', losangeles4);

    var sites = [
    //   'Title',        lat,      long,       contentstring
        ['Los Angeles', 34.054082,-118.24261, losangelescontentString],
        ['Porto Novo', 6.501411,2.604275, portonovocontentstring],
        ['Shackleton', -77.550000, 166.150000, shackletoncontentstring],
        ['Florence', 43.773046,11.255901, florencecontentstring],
        ['Buenos Aires', -34.578528,-58.526273, buenosairescontentstring],
        ['Jodhpur', 27.199507,73.73826, jodhpurcontentstring],
        ['Mt Sinai', 28.555972,33.975048, mtsinaicontentstring],
        ['New Orleans', 29.984676,-90.063171, neworleanscontentstring],
        ['Paris', 48.821799,2.404933, pariscontentstring]
    ];

    var iconBase = 'http://gettylabs.org/visit/FoundationMap/images/';
    function setMarkers(map, markers) {
        for (var i = 0; i < markers.length; i++) {
            var sites = markers[i];
            var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);
            var marker = new google.maps.Marker({
                icon: iconBase + 'bullet.png',
                title: sites[0],
                position: siteLatLng,
                html: sites[3],
                map: map
            });
            google.maps.event.addListener(marker, "click", function () {
                map.setCenterWithOffset(myLatlng, 50, 25);
                if (this.html == losangelescontentString) {
                    infoBubbleLA.setContent(this.html);
                    infoBubbleLA.open(map,this);
                } else {
                    infoBubble.setContent(this.html);
                    infoBubble.open(map,this);
                }
            });
        };
    };

在代码infoBubbleLA和infoBubble中有两个不同的infoBubble。打开一个不会关闭另一个

    var infoBubble = new InfoBubble({
        maxWidth: 400,
    });

    var infoBubbleLA = new InfoBubble({
        maxWidth: 400,
    });
这应该做到:

    google.maps.event.addListener(marker, "click", function () {
                map.setCenterWithOffset(myLatlng, 50, 25);
                if (this.html == losangelescontentString) {
                    infoBubbleLA.setContent(this.html);
                    infoBubbleLA.open(map,this);
                    infoBubble.close();
                } else {
                    infoBubble.setContent(this.html);
                    infoBubble.open(map,this);
                    infoBubbleLA.close();
                }
            });

谢谢,地理编码zip!修正了双重泡沫。但地图仍然没有居中。谢谢您对这方面的任何想法,请:-geocodezip,谢谢!但随着缩放水平,我必须使用最右下角南极洲的标记/窗口,沙克尔顿的小屋就这样从地图上消失了。我真的希望每次打开一个新窗口时,整个地图都能像关闭窗口时一样重新居中。