我正在尝试使用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提高加载地图的性能?
答案 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)保存它们。祝你好运!