在OSMDroid中,我們可以通過(guò)兩種方式切換導(dǎo)航時(shí)的視角,一種是車(chē)頭朝向铲敛,一種是始終朝北。
車(chē)頭朝向
當(dāng)?shù)貓D視角設(shè)定為車(chē)頭朝向時(shí)会钝,地圖將始終呈現(xiàn)為車(chē)輛前方的方向伐蒋。這種視角適用于導(dǎo)航應(yīng)用程序,車(chē)輛將在地圖上穩(wěn)定地保持前進(jìn)方向迁酸。下面是如何在OSMDroid中設(shè)置車(chē)頭朝向的代碼示例:
// 獲取MapView實(shí)例
MapView mapView = findViewById(R.id.map_view);
// 設(shè)置MapView旋轉(zhuǎn)角度是否根據(jù)設(shè)備方向修改
mapView.setMapOrientationEnabled(true);
// 設(shè)置MapView方向跟隨用戶(hù)位置改變
myLocationNewOverlay.setOptionsMenuEnabled(true);
使用車(chē)頭朝向的視角時(shí)先鱼,地圖將始終顯示車(chē)輛的前進(jìn)方向,不管車(chē)輛的朝向如何改變奸鬓。為了實(shí)現(xiàn)這一視角焙畔,我們需要做兩件事情:
第一,將MapView實(shí)例的setMapOrientationEnabled()方法設(shè)為true全蝶。這將啟用地圖旋轉(zhuǎn)功能闹蒜,并允許MapView隨著設(shè)備方向的改變而自動(dòng)更新地圖方向寺枉。
第二,啟用OptionsMenu并將地圖指南針合并到用戶(hù)位置更新中绷落,以便用戶(hù)永遠(yuǎn)能夠看到地圖上的方向姥闪。我們可以使用如下代碼啟用OptionsMenu:
myLocationNewOverlay.setOptionsMenuEnabled(true);
其中,myLocationNewOverlay是UserLocationOverlay的實(shí)例砌烁。
始終朝北
當(dāng)?shù)貓D視角設(shè)定為始終朝北時(shí)筐喳,地圖將始終以地圖正北為方向。不管車(chē)輛的朝向如何函喉,地圖都將保持原來(lái)的朝向不變避归。下面是如何設(shè)置始終朝北視角的代碼示例:
// 獲取MapView實(shí)例
MapView mapView = findViewById(R.id.map_view);
// 設(shè)置MapView方向固定為正北
mapView.setMapOrientation(0);
mapView.setMapOrientationEnabled(false);
// 設(shè)置MapView方向不跟隨用戶(hù)位置改變
myLocationNewOverlay.setOptionsMenuEnabled(false);
使用始終朝北的視角時(shí),地圖將始終保持以正北方向?yàn)榛鶞?zhǔn)的方向管呵,不管車(chē)輛朝向如何改變梳毙。為了實(shí)現(xiàn)這一視角,我們需要做兩件事情:
第一捐下,禁用地圖旋轉(zhuǎn)功能账锹,并將MapView實(shí)例的setMapOrientationEnabled()方法設(shè)置為false。這將禁用地圖旋轉(zhuǎn)功能坷襟,使MapView始終以正北方向呈現(xiàn)奸柬。
第二,禁用OptionsMenu婴程,以便地圖方向不隨用戶(hù)位置的改變而更改廓奕。我們可以使用如下代碼禁用OptionsMenu:
myLocationNewOverlay.setOptionsMenuEnabled(false);
其中,myLocationNewOverlay是UserLocationOverlay的實(shí)例档叔。