close InfoWindow before open another

前端 未结 3 1176
终归单人心
终归单人心 2020-11-27 23:48

I have a problem with InfoWindow. I have an ajax function that retrieves data via JSON, but I can not get close InfoWindow automatically when you open another. My code is th

3条回答
  •  隐瞒了意图╮
    2020-11-28 00:21

    I think I have a simple solution. I just save the last open mark. On the next click first of all I close the last mark.

    var markers = [];
    var infowindows = [];
    
    function addMarkes(facilityID) {
    
            var bounds = new google.maps.LatLngBounds();
    
            for (var i = 0; i < variants.length; i++) {
    
                var v = variants[i];
    
                var position = new google.maps.LatLng(v.Lat, v.Long);
    
                bounds.extend(position);
    
                markers[i] = new google.maps.Marker({
                    position: position,
                    title: v.Title,
                    map: map,
                    animation: google.maps.Animation.DROP,
                    icon: v.Icon,
                    infoWindowIndex: i //synchronize with infoWindows
                });
    
                var localContent = '
    ' + v.Address + '
    '; infowindows[i] = new google.maps.InfoWindow({ content: localContent }); //Just for multiple marks. if (variants.length > 0) { var lastOpen = -1; //Save the last open mark google.maps.event.addListener(markers[i], 'click', function (innerKey) { return function () { //Close the last mark. if (lastOpen > -1) { infowindows[lastOpen].close(); } infowindows[innerKey].open(map, markers[innerKey]); lastOpen = innerKey; } }(i)); } } map.fitBounds(bounds); }

提交回复
热议问题