我已經使用mapfragment顯示了地圖,並且繪製了一個opengles行。爲了增加這兩個視圖,我希望我在opengles上繪製的道路線(使用latlngs和轉換爲opengles範圍值)與地圖上的道路完全匹配。我該如何做到這一點?如何將MapView的範圍映射到開放視圖範圍
感謝
我已經使用mapfragment顯示了地圖,並且繪製了一個opengles行。爲了增加這兩個視圖,我希望我在opengles上繪製的道路線(使用latlngs和轉換爲opengles範圍值)與地圖上的道路完全匹配。我該如何做到這一點?如何將MapView的範圍映射到開放視圖範圍
感謝
創建繪製地圖,箱子一個子視圖到地圖視圖可以是透明的,你可以看到在後臺地圖的視圖。
創建一個描述你想用openGL繪製的路徑的系統。例如,一條線將由兩個包含緯度和經度的2D點組成。
使系統繪製這些座標作爲openGL的路徑。
創建一個「刷新」方法,它將重繪openGL內容(路徑)。你需要做的是給openGL視圖當前可見的座標系統作爲經緯度的左上角和右下角。使用這兩點來定義glOrtho
,left = top_left.latitude
,right = bottom_right.latitude
...這將定義您的座標系與地圖座標相同。所以使用這個不需要轉換來查看座標。現在只需使用新數據(座標系和路徑)重新繪製openGL視圖。
調用刷新方法,只要地圖上發生了變化,滾動,路徑改變...
是執行的步驟above.But行提到的opengles不繪製與latlngs表面我已經作爲頂點傳遞給頂點緩衝區。
我已經繪製了通過使用像這樣的公式將latlng值轉換成笛卡爾座標的直線操作:y = R * cos(lat)* sin(lon) z = R * sin(lat) – user2940383 2014-10-10 11:57:57
非常感謝您的回覆。我還想要一些澄清。我通過使用像這樣的公式將latlng值轉換成笛卡爾座標來繪製直線開口:y = R * cos(lat)* sin(lon) z = R * sin(lat)。這給出了相對於球體的點,所以這些值將是1000的倍數。我已經通過獲取當前位置笛卡爾值對其進行了變換,並且繪製了座標現在將在(1,1)( - 1,-1)..這是轉換它的方式嗎? – user2940383 2014-10-10 12:09:37
不,你不需要那個。除非你縮小到這樣的距離,否則實際上你可以看到地圖「彎曲」,你根本不需要轉換成笛卡爾座標系。您可以簡單地將經緯度視爲笛卡兒。您只需將GL座標系設置爲與您的地圖相同即可。正如我所說,使用正交矩陣並插入地圖邊界座標。 – 2014-10-10 12:21:04