0

ユーザーがズーム レベルを変更したときに Fusion Tables レイヤーをリロードしたい。ご覧のとおり、試してみましたが、機能しませんでした。

var map;
var layerl0;
    function initialize() {
    map=new google.maps.Map(document.getElementById('map_canvas'),{
        center: new google.maps.LatLng(MyLat,MyLng),
            zoom:4,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });
        layerl0 = new google.maps.FusionTablesLayer({
                    query: {
                        select: "'ColumnHeader'",
                        from: 'MyEncryptedId'
                },
                map: map
        });
        /* refresh after zooming */
        google.maps.event.addListener(map, 'zoom_changed', function() {
                layerl0.refresh();
    });
    }
google.maps.event.addDomListener(window, 'load', initialize);
4

3 に答える 3

2

FusionTablesLayerには.refreshメソッドはありません

クエリを再実行するか、FusionTablesLayerを破棄して再作成します

于 2012-06-28T13:31:05.213 に答える
2

これが解決策です。(ここで見つけました)

30 秒ごとにレイヤーを更新します。

var map;
var layerl0;
    function initialize() {
    map=new google.maps.Map(document.getElementById('map_canvas'),{
        center: new google.maps.LatLng(MyLat,MyLng),
        zoom: 4,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    layerl0 = new google.maps.FusionTablesLayer({
        query: {
            select: "'ColumnHeader'",
            from: 'MyEncryptedId'
        },
    });
    layerl0.setMap(map);
    refreshMap();
}
function refreshMap(){
    layerl0.setOptions({
        query: {
        select: "'ColumnHeader'",
        from: 'MyEncryptedId',
            where: "location not equal to" + (-1 * Math.floor(Math.random() * 10000000)).toString()
        }
    }); 
    setTimeout('refreshMap()',30000);
}
google.maps.event.addDomListener(window, 'load', initialize);

@Rebecca と @geocodezip に回答していただきありがとうございます。

于 2012-06-29T11:26:23.380 に答える
0

このサンプル コードは、ユーザーがズームを変更すると、別のフュージョン テーブル レイヤーにスワップするように設計されています。おそらく役立つでしょう: https://developers.google.com/fusiontables/docs/samples/change_query_per_zoom

-レベッカ

于 2012-06-28T18:17:26.503 に答える