本發(fā)明屬于地理信息的,涉及矢量瓦片加載方式,具體涉及一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法。
背景技術:
1、隨著技術的發(fā)展,矢量瓦片作為一種高效的數(shù)據(jù)傳輸和渲染方式,近年來在地圖應用中越來越受歡迎;openlayer為了滿足開發(fā)者和用戶的需求,近年來不斷更新其特性和支持的數(shù)據(jù)格式,目前也支持了對矢量瓦片的加載。
2、目前通過openlayer結合ol-mapbox-style插件可以加載矢量瓦片地圖服務,在滿足加載的同時顯示效果也有一些不足之處,當openlayer檢測到分辨率變化或圖層順序變化或其他圖層遮擋等因素時,它就會重新渲染地圖可視范圍內的要素,這樣會導致同一個feature調用多次stylefunction方法來進行渲染,而且不同分辨率下渲染的位置也會發(fā)生變化,這樣有時就會導致同一個區(qū)域內顯示的要素過多。
技術實現(xiàn)思路
1、為了客服上述現(xiàn)有技術的不足,本發(fā)明的目的是提供一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法,在openlayer渲染矢量瓦片要素的時候,根據(jù)需求減少不必要的重復渲染,這樣同一個要素就會只渲染一次,在渲染同時也可根據(jù)需求調整瓦片要素的幾何位置。
2、為了實現(xiàn)上述目的,本發(fā)明采用的技術方案是:
3、一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法,其特征在于,包括以下步驟:
4、步驟1:矢量瓦片服務發(fā)布;
5、步驟2:地圖框架openlayer結合ol-mapbox-style插件加載矢量瓦片;
6、步驟3:地圖框架openlayer會自動計算當前視圖范圍內的要素,并根據(jù)當前地圖分辨率變化對這些要素調用stylefunction方法來渲染他們的樣式;
7、步驟4:在stylefunction方法中先判斷該要素是否已經(jīng)被渲染,若否則進入步驟五,若是則直接返回結束;
8、步驟5:渲染要素時根據(jù)getgeometry方法獲取要素類型和地理位置數(shù)據(jù);
9、步驟6:根據(jù)需求計算修改地理位置數(shù)據(jù),將要素設置到對應的位置;
10、步驟7:根據(jù)類型和步驟6得到的地理位置數(shù)據(jù)繪制點、線、面、圖標等要素;
11、步驟8:生成最終矢量瓦片。
12、所述的步驟4中需將每次調用stylefunction的要素feature保存到數(shù)組中,保存之前先判斷數(shù)組中是否已存在該要素feature,若存在則不保存,若不存在則保存起來。
13、所述的步驟6中該位置數(shù)據(jù)可以賦值修改,最終顯示在預期的位置上。
14、本發(fā)明的有益效果是:
15、1、在加載矢量瓦片時可以控制在同一地圖分辨率下同一要素feature的渲染次數(shù),提高一定的渲染效率;
16、2、根據(jù)需求動態(tài)修改要素的地理位置數(shù)據(jù),可以更靈活的將要素設置到對應的位置上,提高整體顯示的美觀度;
17、3、本發(fā)明提供了完整的動態(tài)計算矢量瓦片要素幾何位置技術方案,指出了詳細的技術路線關鍵點。
1.一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法,其特征在于,包括以下步驟:
2.根據(jù)權利要求1所述的一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法,其特征在于,所述的步驟4中需將每次調用stylefunction的要素feature保存到數(shù)組中,保存之前先判斷數(shù)組中是否已存在該要素feature,若存在則不保存,若不存在則保存起來。
3.根據(jù)權利要求1所述的一種基于openlayer動態(tài)計算矢量瓦片要素幾何位置的方法,其特征在于,所述的步驟6中該位置數(shù)據(jù)可以賦值修改,最終顯示在預期的位置上。