1

我使用的是Google Maps API v3,並且有幾個地圖標記鏈接到不同的頁面。當onmouseover的狀態欄是而不是顯示的網址,但是當點擊標記時確實在狀態欄顯示URL加載文本。

看來我的代碼與狀態欄有某些衝突,還是你必須指定一個屬性來顯示狀態欄?這裏是我的代碼:

如何讓Google地圖在狀態欄中顯示地圖標記鏈接?

function initialize(mapInfo) 
{  
    // object literal for map options 
    var myOptions = 
    { 
     center: new google.maps.LatLng(30, 3), // coordinates for center of map 
     zoom: 2, // smaller number --> zoom out 
     mapTypeId: google.maps.MapTypeId.HYBRID // ROADMAP, SATELLITE, TERRAIN, or HYBRID 
    }; 

    // note: if the id has a dash in its' name, map instantiation doesn't work! 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    // MAP MARKERS instantiated here 
    for(var i = 0; i < mapInfo.length; i++) 
    { 
     var link = mapInfo[i].link; 
     var name = mapInfo[i].name; 
     var lat = mapInfo[i].lat; 
     var lng = mapInfo[i].lng; 

     // object literal for each map marker 
     var marker = new google.maps.Marker(
     { 
      url: link, 
      title: name, 
      position: new google.maps.LatLng(lat, lng), 
      map: map 
     }); 

     // setting the link to each map marker here 
     setLink(marker); 

     // setting each map marker here 
     marker.setMap(map); 
    } 
} // end of function initialize() 

function setLink(mapMarker) 
{ 
    // event listener for marker links added to each marker 
     google.maps.event.addListener(mapMarker, "click", function() 
     { 
      window.location.href = mapMarker.url; // obtaining the url from the object literal 
     }); 
} 


...我收到從阿賈克斯對象字面的MapInfo(傳遞到函數初始化),用JSON解析 - 只是爲了澄清MapInfo的性能。

* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *編輯: ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****

這裏是一個解決方案,簡單地將鏈接在infowindow來代替:

 // object literal for each map marker 
     var marker = new google.maps.Marker(
     { 
      //url: link, 
      title: name, 
      content: "<a href = " + link + ">" + name + "</a>", 
      position: new google.maps.LatLng(lat, lng), 
      map: map 
     }); 

     setWindow(map, marker); 
function setWindow(map, mapMarker) 
{ 
    // event listener for marker links added to each marker 
     google.maps.event.addListener(mapMarker, "click", function() 
     { 
     var infowindow = new google.maps.InfoWindow(
     { 
      content: mapMarker.content 
     }); 
        infowindow.open(map, mapMarker); 
     }); 
} 

回答

1

TL; DR:無法完成。


你提的問題基本上是「我怎麼設置狀態欄的鏈接的文本,當鼠標懸停我的標誌?」

因此,您需要一個mouseover處理程序來設置文本,並將鼠標移出處理程序重新放回。

function setLink(mapMarker) 
{ 
    google.maps.event.addListener(mapMarker, "click", function() { 
     window.location.href = mapMarker.url; 
     }); 
    google.maps.event.addListener(mapMarker, "mouseover", function() { 
     window.status = mapMarker.url; 
     return true; // apparently this is necessary for window.status 
     }); 
    google.maps.event.addListener(mapMarker, "mouseout", function() { 
     window.status = ''; 
     return true; 
     }); 
} 

但見Reliable cross browser way of setting Status bar text —你不能這樣做,因爲瀏覽器禁用它。加載url之後,瀏覽器本身將其作爲正常功能的一部分顯示在狀態欄中。這工作作出相關標記圖像的鏈接,因爲瀏覽器的正常功能將接管並顯示在狀態欄中的URL

的一種方式。不幸的是,API不公開標記的各個部分以使其成爲可能。

+0

哇,所以這是不可能的,然後...我唯一的解決方案,這是接近我想要的,是改變地圖標記事件監聽器顯示一個「infowindow」與其中的鏈接,而不是 - url **是**然後顯示在狀態欄中(我已經在上面添加了這些細節)。 –

+0

..哈哈! - 「TL; DR」 –