簡介
OpenStreetMap最核心的部分,就是他的地圖囉,而在
OSMDROID中當然也會有個東西用來顯示地圖的元件,那就是我們現在要來介紹的MapView
OSMDROID的MapView是改寫Android本身的MapView,簡單來說就是把原本是Google Map的MapView變成是OpenStreetMap的。
使用方式
OSMDROID中用MapView有兩種方式,一種是寫在Layout裡面,一種是寫在Activity裡面
首先先介紹如果寫在Layout裡面會是什麼樣子
<org.osmdroid.views.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tilesource="Mapnik"
/>
然後是Activity中的寫法
public class MainActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView map = (MapView) findViewById(R.id.map);
map.setTileSource(TileSourceFactory.MAPNIK);
}
}
這兩種寫法都很棒,就看個人習慣囉
另外MapView還有提供一些其他的方法,像是
這是在MapView上新增內建的縮放工具
map.setBuiltInZoomControls(true);
這個是啟用兩指縮放功能
map.setMultiTouchControls(true);
這是限制最大縮放等級
map.setMaxZoomLevel(16);
這是限制最小縮放等級
map.setMinZoomLevel(1);
這個是在設定說是否當本機沒有圖資時,允許讓MapView去跟Tile Server要圖資
map.useDataConnection(true);
最後這個是個很重要的東西,因為Android能支援的螢幕解析度太多了,但圖資的解析度是固定的,所以可能會出現到明明Zoom Level已經到最細緻的部分了,但還是沒辦法看到全部的東西,所以OSMDROID中提供這個方法可以根據手機的螢幕解析度去將圖資做一些調整,讓圖資顯示正常。
map.setTilesScaledToDpi(true);