1. 程式人生 > >openlayers3應用(三):百度座標“糾偏”

openlayers3應用(三):百度座標“糾偏”

前兩篇文章介紹了openlayers3載入百度線上和離線瓦片地圖,頁面上能夠正常顯示。地圖載入後在地圖上顯示一條GPS軌跡,發現離實際位置相差太遠,如下圖所示:


軌跡形狀和實際形狀相同,但是位移太遠,採用座標加偏移的方法(在原有經緯度座標基礎上進行數值增減),得到和實際軌跡完全重新的新的軌跡,如下圖所示:

 

在地圖上新增另外一條車輛軌跡,發現使用相同的座標偏移量後,第二條軌跡又存在偏差,第二條軌跡未做偏移前如圖所示:

 

經過座標偏移後如下圖:

 

可以看到地圖上兩條軌跡,使用相同的座標偏移量,不能進行“糾偏”,繼續調整第二條軌跡的座標偏移量,使第二條軌跡也和實際位置重合,第二條軌跡“糾偏”後如下圖所示:

 

上述“糾偏”過程可以看出,百度地圖對資料進行了二次偏移,並且偏移量不是線性的,但是一定區域內,座標偏移量是相同的,上述兩條車輛軌跡的區域,採用相同的偏移量,可以在地圖上和實際道路完全重合。

百度座標“糾偏”的基本思路:將一定範圍的地圖劃分為多個矩形區域,在這些區域新增一些參照座標(如該矩形區域內的高速,國道等),將這些座標繪製到頁面上,將圖形移動到跟設計道路或者參照目標完全重合的位置,得到該矩形區域的座標偏移量。在地圖上繪製圖元物件時,得出每個座標點所在區域的偏移量,對座標點進行偏移,從而實現百度地圖“糾偏”。