使用openlayers 3.16.0在Android post-Kitkat webview上加载大型楼层地图时非常滞后

时间:2016-07-07 07:01:19

标签: android android-webview openlayers-3

我正在尝试使用Android 5.1.1设备上的openlayers 3.16.0加载非常大的楼层图(PNG大小为618KB,分辨率为7062 x 7582)。

我几乎无法在WebView上滚动以平移地板图。有时应用程序会自行崩溃。当我使用chrome检查webview时,它会显示以下消息:

  

延迟长时间运行的计时器任务以提高滚动平滑度。   见crbug.com/574343。

我已经在webview的活动上启用了硬件加速,这里是webview的WebSettings:

WebSettings webSettings = getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setDatabaseEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setLoadWithOverviewMode(false);
webSettings.setUseWideViewPort(true);
webSettings.setSupportZoom(false);

webSettings.setAppCachePath(dir.getPath());
webSettings.setAllowFileAccess(true);
webSettings.setAppCacheMaxSize(1024 * 1024 * 50);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
    setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

enableCrossDomain();

setWebChromeClient(new WebChromeClient());

我是否知道如何使用Android WebView上的openlayers 3提高加载地图的性能?

1 个答案:

答案 0 :(得分:1)

可能会发生这种情况,因为它是一个包含大量信息的Vector层,因此很难渲染。为了提高性能,您可以尝试使用由.png图像组成的平铺层:

  var layer = new ol.layer.Tile({
    name:"Mapa",
    isBaseLayer:true,
    visible:true,
    source: new ol.source.OSM({
     url:'../layers/tiles/{z}/{x}/{y}.png'
    }),
  }));  

this code的帮助下,您可以为自己构建一个简单的应用程序,将地图导出为.png图像。请记住使用正确的文件夹格式(z / x / y)保存它们。祝你好运!