Bing Maps API предотвращает открытие того же информационного окна, когда оно открыто в данный момент

Я использую Bing Maps API и столкнулся с этой проблемой. При нажатии на булавку отображается информационное окно. Однако, если вы продолжите нажимать на булавку, она будет открывать больше информационных окон. Как мне предотвратить это и открыть только одно информационное окно?

// 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);
    }
};

person sseeaann    schedule 25.08.2015    source источник
comment
Я смог прийти к рабочему решению, добавив дополнительный идентификатор элемента в метод close: $('.MapPushpinBase, a.close').on('click', function () { infobox.setHtmlContent(""); }); Есть ли лучшее решение? Скорее всего, и я хотел бы увидеть его еще, если кто-то его знает.   -  person sseeaann    schedule 26.08.2015


Ответы (1)


Вы создаете новое информационное окно каждый раз, когда нажимаете канцелярскую кнопку. Гораздо более эффективный способ работы с информационными ящиками — создать один и использовать его повторно. Вот сообщение в блоге, в котором описывается, как это сделать:

https://rbrundritt.wordpress.com/2011/10/13/multiple-pushpins-and-infoboxes-in-bing-maps-v7/

person rbrundritt    schedule 09.12.2015