Карты Google: openInfoWindowTabsHtml + GDownloadUrl (вызов Ajax) - PullRequest
3 голосов
/ 22 мая 2010

Я столкнулся со следующей проблемой. На карте Google я хочу добавить информационные окна с вкладками, где содержимое загружается из внешнего файла с помощью метода GDownloadUrl. Код работает нормально, но с двумя проблемами. а) При первом нажатии на маркер ничего не происходит. Мне нужно дважды щелкнуть, чтобы получить информационное окно. После этого все работает нормально. б) Когда я закрываю информационное окно и открываю его снова, вкладки повторяются. Каждый раз, когда я снова открываю информационное окно, эти вкладки повторяются. Таким образом, если использовать код ниже и открыть информационное окно 3 раза, я получу 6 вкладок (Информация, Фотографии, Информация, Фотографии, Информация, Фотографии). Есть идеи, что я здесь делаю не так?

Я также пробовал это с методом $ .get JQuery, но результаты точно такие же.

function createREMarker(lat,long,reID)
{
    var reMarker = new GMarker(rePoint,iconRE);
    GEvent.addListener(reMarker, "click", function()
    {
        GDownloadUrl('testcontent.php?reID='+reID+'&what=info', function(data) {
            content1 = data;
        });
        GDownloadUrl('testcontent.php?reID='+reID+'&what=photos', function(data) {
            content2 = data;
        });
        tabs.push(new GInfoWindowTab('Info', '<div id="mapOverlayContent" style="width:375px; height:220px; overflow:auto;">'+content1+'</div>'));
        tabs.push(new GInfoWindowTab('Photos', '<div id="mapOverlayContent" style="width:375px; height:220px; overflow:auto;">'+content2+'</div>'));
        reMarker.openInfoWindowTabsHtml(tabs);
    });
    return reMarker;
};

1 Ответ

3 голосов
/ 24 мая 2010

Во-первых, вы используете v2 API, который сейчас официально устарел. Для сайта, который я поддерживаю, я делаю следующее (это v3 API и использует jQuery):

function createMarker(point, id, markerOptions) {
    var marker = new google.maps.Marker(point,markerOptions);
    var Lat = point.lat();
    var Lng = point.lng();

    google.maps.Event.addListener(marker, "click", function() {
        $.ajax({
            type: "GET",
            url: "/data/specific.xml?id=" + id,
            dataType: "xml",
            success: function(xml) {
               var this_marker = $(xml).find('marker');
               var name = $(this_marker).attr("name");
               details_tab = details_tab + "ID: " + id + "<br />Name: " + name + "<br />";
               var infowindow = new google.maps.InfoWindow({
                   content: details_tab,
               });
               infowindow.open(map, marker);
            }
        });
    }
    return marker;
}

Из того, что я вижу, вкладки больше не поддерживаются в v3 API? :( Но в этом примере используются вкладки из jQuery UI:

http://gmaps -samples-v3.googlecode.com / СВН-история / R78 / багажник / InfoWindow / tabs.html

http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/infowindow/tabs.html?r=78

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...