OpenStreetMapをAndroidアプリで表示する サンプルコード
前段階として、
OpenStreetMapをAndroidアプリに組み込む
でライブラリとしてosmdroidの準備ができていることが前提です。
さて、ここではさくっとOpenStreetMapを表示しましょう。
GoogleMapと利用方法はほぼ同じです。
- MainActivity
package com.example.osmsample; import org.osmdroid.api.IMapController; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import android.os.Bundle; import android.widget.LinearLayout; import android.app.Activity; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IMapController m_mapController; MapView map = new org.osmdroid.views.MapView(this, 256); map.setBuiltInZoomControls(true); map.setTileSource(TileSourceFactory.MAPNIK); map.setMultiTouchControls(true); org.osmdroid.views.MapView.LayoutParams mapParams = new org.osmdroid.views.MapView.LayoutParams( org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, null, 0, 0, org.osmdroid.views.MapView.LayoutParams.BOTTOM_CENTER); LinearLayout map_layout = (LinearLayout) findViewById(R.id.mapview); map_layout.addView(map, mapParams); m_mapController = map.getController(); m_mapController.setZoom(15); double tempo_center_lat = 35.45797; //横浜みなとみらいの緯度 double tempo_center_lng = 139.632314; //横浜みなとみらいの経度 GeoPoint center_gpt = new GeoPoint(tempo_center_lat, tempo_center_lng); m_mapController.setCenter(center_gpt); } }
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> </LinearLayout> </LinearLayout>