点击即可打开Goog​​le Map的多个信息窗口,而无需切换

时间:2019-12-06 20:03:24

标签: javascript jquery google-maps

我从最近分配给我的项目继承的这段代码有问题。单击另一个节点后,地图上的信息窗口将显示而不关闭。 我尝试了infowindow.close(marker,map)但它没有显示任何窗口,我试图做检查以查看是否可以使用if语句来检查当前打开的任何窗口,但无济于事。 我将不胜感激

(function($) {

    function new_map( $el ) {

        // var
        var $markers = $el.find('.marker');


        // vars
        var args = {
            zoom        : 16,
            center      : new google.maps.LatLng(0, 0),
            mapTypeId   : google.maps.MapTypeId.ROADMAP
        };


        // create map               
        var map = new google.maps.Map( $el[0], args);


        // add a markers reference
        map.markers = [];


        // add markers
        $markers.each(function(){

            add_marker( $(this), map );
        });


        // center map
        center_map( map );


        // return
        return map;

    }

    function add_marker( $marker, map ) {

        // var
        var latlng = new google.maps.LatLng( $marker.attr('data-lat'), $marker.attr('data-lng') );

        // create marker
        var marker = new google.maps.Marker({
            position    : latlng,
            map         : map
        });

        // add to array
        map.markers.push( marker );

        // if marker contains HTML, add it to an infoWindow
        if( $marker.html() )
        {
            // create info window
            var infowindow = new google.maps.InfoWindow({
                content : $marker.html()
            });
            // show info window when marker is clicked
            google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open( map, marker );
                   // setTimeout(function () { infowindow.close(); }, 5000)

             });

        }

    }


    function center_map( map ) {

        // vars
        var bounds = new google.maps.LatLngBounds();

        // loop through all markers and create bounds
        $.each( map.markers, function( i, marker ){

            var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );

            bounds.extend( latlng );

        });

        // only 1 marker?
        if( map.markers.length == 1 )
        {
            // set center of map
            map.setCenter( bounds.getCenter() );
            map.setZoom( 16 );
        }
        else
        {
            // fit to bounds
            map.fitBounds( bounds );
        }

    }


    $(document).ready(function(){

        $('.acf-map').each(function(){

            // create map
            map = new_map( $(this) );

        });

    });

    })(jQuery);

0 个答案:

没有答案
相关问题