bing地图api阻止同一信息框在当前打开时打开

bing地图api阻止同一信息框在当前打开时打开,api,maps,bing-maps,bing,infobox,Api,Maps,Bing Maps,Bing,Infobox,我正在使用Bing地图API,这个问题让我大吃一惊。单击pin时,将显示信息框。但是,如果您继续单击pin,它将继续打开更多信息框。我如何防止这种情况,只打开一个信息框 // MAP FUNCTIONS Map.prototype.addPins = function (pins) { if (!pins.length) return; var bing = getBing(this); var showPopup = function (e) {

我正在使用Bing地图API,这个问题让我大吃一惊。单击pin时,将显示信息框。但是,如果您继续单击pin,它将继续打开更多信息框。我如何防止这种情况,只打开一个信息框

// MAP FUNCTIONS

Map.prototype.addPins = function (pins) {
    if (!pins.length) return;

    var bing = getBing(this);

    var showPopup = function (e) {
        var pin = e.target,
            infoboxOptions = { pushpin: pin },
            infobox = new Microsoft.Maps.Infobox(pin._location, infoboxOptions);
        infobox.setHtmlContent(pin._data.popup);

        bing.entities.push(infobox);

        $('a.close').on('click', function () {
            infobox.setHtmlContent("");
        });
    };

    for (var i = 0; i < pins.length; i++) {
        var pin = new Microsoft.Maps.Pushpin(pins[i].position, {
            draggable: false,
            htmlContent: '<i class="icon ' + pins[i].cssClass + '" />'
        });
        pin._data = pins[i];

        Microsoft.Maps.Events.addHandler(pin, 'click', showPopup);
        bing.entities.push(pin);
    }
};

每次单击图钉时都会创建一个新的信息框。处理信息框的一种更有效的方法是创建一个信息框并重用它。以下是一篇博客文章,概述了如何做到这一点:


我可以通过向close方法添加一个额外的元素标识符来找到一个有效的解决方案:$'.MapPushpinBase,a.close'。单击,函数{infobox.setHtmlContent;};有更好的解决办法吗?很有可能,如果有人知道的话,我还是希望看到它。