заставить гугл карту api v2 addDomListener работать в IE - PullRequest
1 голос
/ 18 января 2012

У меня есть некоторые проблемы с использованием Google Map API V2. Что я хочу, так это чтобы можно было навести курсор мыши на всплывающую подсказку. Ниже приведен код, который у меня есть. В Firefox работает, но мне нужно очень осторожно перемещать мышь по всплывающей подсказке, если я перейду к быстрой, она будет скрыта (решено: добавлена ​​задержка для функции mouseout, и там проверяется, запускаю ли я всплывающую подсказку) и худшую часть это не работает вообще в IE. Если я перейду через точку булавки, я смогу увидеть всплывающую подсказку, но не могу навести на нее указатель мыши.

function createHotelSearchMarker(point, number, message) {
    var newIcon = new GIcon(G_DEFAULT_ICON);
    wIcon.image = imageChart + "chst=d_map_spin&chld=0.5|0|CCCCCC|10|_|" + number + "&ext=.png";
    var marker = new GMarker(point, {icon: newIcon, clickable:true, zIndexProcess:importanceOrder});
    marker.importance = 1;  
    /*add listener for mouseover*/
    GEvent.addListener(marker, "mouseover", function() {
        marker.openExtInfoWindow(
            map,
            "mapInfoWindow",
            "<div id='tooltip'>" + message + "</div>",
            {beakOffset: 3}
        );
        marker.setImage(imageChart + "chst=d_map_spin&chld=0.5|0|FF0000|10|_|" + number + "&ext=.png");
        marker.importance = 2;
        marker.setLatLng(marker.getLatLng());

        /*i added a dom listener for the tooltip*/
        if(document.getElementById("tooltip") != null) {

            GEvent.addDomListener(document.getElementById("tooltip"), "mouseover", function(){
                isFiredByDivListener = 1;
                GEvent.trigger(marker,"mouseover");
            });

            GEvent.addDomListener(document.getElementById("tooltip"), "mouseout", function(){
                isFiredByDivListener = 0;
                GEvent.trigger(marker,"mouseout");
            });
        }
    });

    /*add a listener for mouse out*/
    GEvent.addListener(marker, "mouseout", function() {
        map.closeExtInfoWindow();

        marker.setImage(imageChart + "chst=d_map_spin&chld=0.5|0|CCCCCC|10|_|" + number + "&ext=.png");
        marker.importance = 1;
        marker.setLatLng(marker.getLatLng());

    });
    return marker;
    }

the marker will be return and 


if (marker != null){
                map.addOverlay(marker);
            }

Спасибо за вашу помощь и время

1 Ответ

0 голосов
/ 18 января 2012

Мне кажется, что у вас это происходит, то есть потенциальная проблема, при которой вы могли бы рекурсивно вызывать наведение мыши на маркер.Я бы предложил переместить два прослушивателя событий addDomListener за пределы прослушивателя событий маркера.

GEvent.addListener(marker, "mouseover", function() {
        ...
            GEvent.addDomListener(document.getElementById("tooltip"), "mouseover", function(){
                GEvent.trigger(marker,"mouseover");
            });
...