【问题标题】:How to reload Google maps layer?如何重新加载谷歌地图图层?
【发布时间】:2012-06-28 13:25:19
【问题描述】:

我想在用户更改缩放级别时重新加载 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);

【问题讨论】:

  • 缩放变化时重新加载图层有什么意义?
  • 我想使用新数据,因为这个 FusionTable 经常更新新行。

标签: javascript google-maps-api-3 addeventlistener google-fusion-tables


【解决方案1】:

FusionTablesLayer 上没有 .refresh 方法

重新运行查询或销毁并重新创建 FusionTablesLayer

【讨论】:

  • 我想在这种情况下销毁和重新创建 FusionTablesLayer 是最好的解决方案。你能告诉我怎么做吗? (我是初学者。)
  • layer.setMap(null); 删除图层,但我想重建整个图层并获取“实时”数据。这不起作用:layer.setMap(null); var layer = new google.maps.FusionTablesLayer({ query: { select: "'ColumnHeader'", from: 'MyEncryptedId' }, map: map })
【解决方案2】:

这是解决方案。 (我找到了here

每 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!

【讨论】:

    【解决方案3】:

    此示例代码旨在在用户更改缩放时交换不同的 Fusion Table Layer。也许它会有所帮助: https://developers.google.com/fusiontables/docs/samples/change_query_per_zoom

    -丽贝卡

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2011-10-04
      • 1970-01-01
      • 2011-10-14
      • 2014-04-30
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多