文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/html
與離線瓦片方案同樣,一樣是爲了解決移動端網速和流量問題,可是卻不只僅於此。傳統的矢量數據的展現通常分爲兩種方案:前端
而該方案上,當咱們將SHP矢量數據以必定算法處理成文本文件存放到移動端後,既能夠避免動態獲取數據對服務端的壓力,也能夠擁有WFS方案上在前端實時渲染數據時的樣式制定和交互便捷的優勢。
整個方案優勢總結爲:算法
矢量切片方案在我以前的文章中均有描述:項目角度談矢量切片運用以及Geoserver處理自定義規格矢量切片方案以及WebGIS中矢量切圖的初步研究。簡單敘述爲:json
//計算格網行列號 int colNums = 0, rowNums = 0; colNums = Convert.ToInt32(Math.Ceiling((_maxX - _minX) / inputGridSize)); rowNums = Convert.ToInt32(Math.Ceiling((_maxY - _minY) / inputGridSize));
選用單元網格圖層進行打包,主要緣由爲單元網格爲最小劃分網格,變更相對較少,減小實施次數。利用網格將已有的切片再進行整合打包,可進一步控制前端展現時的矢量數據數量。後端
注意:
瓦片的打包路徑規範爲:
工具界面爲:
緩存
前端展現所用算法與網格打包時所用算法相同。JS獲取本地數據的思想方法也與我在移動端H5地圖離線瓦片方案中描述的移動端讀取本地瓦片的方法相同。不作累述,核心代碼以下:服務器
var originx=parseFloat(gridClipParams[0]); var originy=parseFloat(gridClipParams[1]); var size=parseFloat(gridClipParams[2]); var vectorSource = new VectorSource({ format:format, url:function(extent) { var temurl=GeosService.queryContent(url,servicelayerid,where,extent); if(useMobileCache){ var col=Math.floor(Math.abs((extent[0]-originx))/size); var row=Math.floor(Math.abs((extent[1]-originy))/size); //本地測試url //temurl="http://192.168.32.135:8080/gis/tilemap/11010100100907/"+subtypeid+"/"+row+"/"+col+".json"; temurl =self.offlineURL+encodeURIComponent(temurl)+"&row="+row+"&col="+ col+"&layername="+subtypeid; } return temurl; }, strategy: function(extent,resolution){ var minx=extent[0]-size; var miny=extent[1]-size; var maxx=extent[2]+size; var maxy=extent[3]+size; var m=Math.ceil((maxx-minx)/size); var n=Math.ceil((maxy-miny)/size); var extentArr=new Array(); for(var i=0;i<m;i++){ for(var j=0;j<n;j++){ var temextent=[]; var temminx=minx+i*size; var temminy=miny+j*size; var temmaxx=minx+(i+1)*size; var temmaxy=miny+(j+1)*size; temextent=[temminx,temminy,temmaxx,temmaxy]; extentArr.push(temextent); } } return extentArr; } });
因爲部件打包是以1000米的網格進行劃分後再打包,能夠看見有的不在單元網格區劃內的部件也展現在了地圖上。因此網格切分的大小是一個必須根據項目進行調整的參數。微信
我將打包上傳單獨進行描述,是由於這一塊整合時須要格外注意文件的合併方式。工具
責任網格打包文件夾的路徑說明: \責任網格編碼\部件小類\行號\列號.json性能
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^