【问题标题】:How do I get Google Maps to display map-marker links in the status bar?如何让 Google 地图在状态栏中显示地图标记链接?
【发布时间】:2012-05-27 20:34:08
【问题描述】:

我正在使用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(传递到函数初始化),用 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);
        });
}

【问题讨论】:

    标签: google-maps-api-3 hyperlink google-maps-markers statusbar onmouseover


    【解决方案1】:

    TL;DR:无法完成。


    您的问题基本上是“当我将鼠标悬停在标记上时,如何将状态栏的文本设置为链接?”

    因此,您需要一个 mouseover 处理程序来设置文本,并需要一个 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 — 你不能这样做,因为浏览器禁用了它。加载 url 后,浏览器本身会将其显示在状态栏中,作为正常功能的一部分。

    工作的一种方法是将相关标记图像设为链接,因为浏览器的正常功能将接管并在状态栏中显示 url。不幸的是,API 也没有公开标记的各个部分来实现这一点。

    【讨论】:

    • 哇,所以这是不可能的......我唯一的解决方案,接近我想要的,是更改地图标记事件侦听器以显示带有链接的infowindow取而代之的是——网址 is 然后显示在状态栏中(我在上面添加了这些详细信息)。
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多