Can I remove just the popup bubbles of POI's in Google Maps API v3?

后端 未结 7 1410
走了就别回头了
走了就别回头了 2020-12-01 01:09

So I\'m working on a new web app that has a big focus on maps. Using Google Maps API v3 and really happy with it but noticed that the points of interest (POI\'s) have autom

7条回答
  •  温柔的废话
    2020-12-01 01:35

    Editor's note: this answer was applicable until version 3.23. Since version 3.24 released in 2016, you can use clickableIcons map option. See xomena's answer.

    Version ~3.12 fix. Demo

    Here is a new patch that works again. I have tested it with version 3.14.

    Now we gonna patch set() instead of open().

    function fixInfoWindow() {
        // Here we redefine the set() method.
        // If it is called for map option, we hide the InfoWindow, if "noSuppress"  
        // option is not true. As Google Maps does not know about this option,  
        // its InfoWindows will not be opened.
    
        var set = google.maps.InfoWindow.prototype.set;
    
        google.maps.InfoWindow.prototype.set = function (key, val) {
            if (key === 'map' && ! this.get('noSuppress')) {
                console.warn('This InfoWindow is suppressed.');
                console.log('To enable it, set "noSuppress" option to true.');
                return;
            }
    
            set.apply(this, arguments);
        }
    }
    

    What you have to do is set option noSuppress to true for your own InfoWindow's in order to open them, for example:

    var popup = new google.maps.InfoWindow({
        content: 'Bang!',
        noSuppress: true
    });
    
    popup.setPosition(new google.maps.LatLng(-34.397, 150.644));
    
    popup.open(map);
    

    or:

    var popup = new google.maps.InfoWindow({
        content: 'Bang!',
    });
    
    popup.set('noSuppress', true);
    popup.setPosition(new google.maps.LatLng(-34.397, 150.644));
    
    popup.open(map);
    

提交回复
热议问题