我正在使用Google Maps API v3
,并且有几个链接到不同页面的地图标记。当onmouseover
状态栏不显示网址时,但是当点击标记时,会显示状态栏中的网址加载文字。
似乎我的代码在某种程度上与状态栏冲突,或者你是否必须指定一个属性来显示状态栏?这是我的代码:
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
});
}
...我从Ajax获取了对象 - 文字mapInfo(传递给函数initialize),用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);
});
}
答案 0 :(得分:1)
TL; DR:无法完成。
您的问题基本上是&#34;当鼠标悬停在标记上时,如何将状态栏的文本设置为链接?&#34;
因此,您需要一个鼠标悬停处理程序来设置文本,并使用mouseout处理程序将其重新放回。
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 - 您无法执行此操作,因为浏览器会将其禁用。加载网址后,浏览器本身会将其显示在状态栏中,作为正常功能的一部分。
工作的一种方法是将相关的标记图像作为链接,因为浏览器的正常功能将接管并在状态栏中显示网址。不幸的是,API并没有公开标记的各个部分,以使其成为可能。