2012-01-18 36 views
1

我有一些麻煩使用谷歌地圖api v2。我想要的是能夠通過鼠標移到工具提示上。 下面是我有的代碼。在Firefox中的作品,但我必須非常輕鬆地在工具提示上移動鼠標,如果我去快速它將隱藏(解決方法:在mouseout函數上添加一個延遲,並檢查是否觸發工具提示)和最糟糕的部分它在IE中根本不會動手。如果我通過引腳指向,我將能夠看到提示,但我不能用鼠標移動它。谷歌地圖api v2 addDomListener在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); 
      } 

謝謝您的幫助和時間

回答

0

在我看來,你有這回事,也就是一個潛在的問題,你可能是遞歸觸發標記鼠標懸停。我建議將兩個addDomListener事件偵聽器移到標記的事件偵聽器之外。

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

這也是我的第一個想法,但不幸的是,它既不在IE也不在Firefox中工作 – user745671 2012-01-18 14:14:40