1

私はを使用してGoogle Maps API v3おり、さまざまなページにリンクするいくつかのマップマーカーがあります。onmouseoverステータスバーにURLが表示されていない場合でも、マーカーをクリックすると、ステータスバーにURL読み込みテキストが表示されます

コードが何らかの形でステータスバーと競合しているようです。または、ステータスバーを表示するためにプロパティを指定する必要がありますか?これが私のコードです:

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(関数initializeに渡される)をAjaxから取得しています。

* ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *編集:** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****解決策は次のとおりです。代わり

に、リンクを挿入するだけです。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);
        });
}
4

1 に答える 1

1

TL;DR:できません。


あなたの質問は基本的に「マーカーにマウスオーバーしたときにステータスバーのテキストをリンクに設定するにはどうすればよいですか?」です。

そのため、テキストを設定するにはマウスオーバー ハンドラーが必要であり、テキストを元に戻すにはマウスアウト ハンドラーが必要です。

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;
       });
}

ただし、ステータスバーのテキストを設定する信頼できるクロスブラウザの方法を参照してください。ブラウザが無効にするため、これを行うことはできません. URL が読み込まれると、ブラウザ自体が通常の機能の一部としてステータス バーに表示します。

有効な方法の 1 つは、関連するマーカー イメージをリンクにすることです。これは、ブラウザーの通常の機能が引き継ぎ、URL をステータス バーに表示するためです。残念ながら、API はこれを可能にするマーカーのさまざまな部分を公開していません。

于 2012-05-27T23:07:13.990 に答える