更新图表元素后刷新openlayers地图

时间:2015-05-13 17:14:34

标签: javascript jquery openlayers

在更新地图上显示的地图文件中的饼图大小后(点击按钮),我需要刷新openlayers地图。我无法刷新整个页面或丢失数据。它在我改变缩放级别时有效。我试过map.updateSize()(无效果),map.render()(TypeError“a”未定义),layer.redraw()。我不确定我是否遗漏了与openlayers相关的内容,或者我的javascript是否存在问题。我查看了很多帖子,但似乎无法得到任何有效的答案。

$(document).ready(function() {
    map = new OpenLayers.Map( 'map' ,
    { maxExtent: new OpenLayers.Bounds({{bounds.0}}, {{bounds.1}}, {{bounds.2}}, {{bounds.3}}),
    controls:[new OpenLayers.Control.Navigation(),
               new OpenLayers.Control.LayerSwitcher(),
               new OpenLayers.Control.PanZoomBar()],
     numZoomLevels:20
     }
     );
     var mpLayer = new OpenLayers.Layer.MapServer('Zones Layer', '{{ mapserverpath }}', { 
                map:'{{mapFile}}',
                layers:'all',
                isBaseLayer: 'true'
                },{
                    singleTile: 'true'
//                  ratio: 2.0
                }
            );

    map.addLayers([mpLayer]);
    //map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
    map.zoomToMaxExtent();  

    map.events.register("click", map, qryDB );

    $(document).on('click', '#bttnMinus', function(){
        pieFact*=0.5;
        updatePieFact();
        mpLayer.redraw();
    });
    $(document).on('click', '#bttnPlus', function(){
        pieFact*=1.5;
        updatePieFact();
        mpLayer.redraw();
    });
    $(document).on('click', '#bttnReset', function(){
        pieFact=1.0;
        updatePieFact();
        mpLayer.redraw();
    });
});

2 个答案:

答案 0 :(得分:0)

您可以在重绘之前尝试调用"clearGrid()"函数。

“clearGrid()” Layer.Grid 的函数( Layer.MapServer 继承自 Layer.Grid )。它会破坏图层的每个图块。

请注意“clearGrid()”不是APIMethod,因此不应该以这种方式调用它。

还有类似的问题/答案here

答案 1 :(得分:0)

试试这个。它对我有用。

$(窗口).trigger('调整&#39);

此代码再次设置屏幕。