LoginSignup
8
12

More than 5 years have passed since last update.

osmdroidを使ってAndroidでOpenStreetMapを表示してみる

Last updated at Posted at 2016-12-29

こんにちは@xsotaです。

この投稿はOpenStreetMap Advent Calendar 2016 20日目の記事です。

osmdroidを使って地図を表示したくなったので、なんとなくやってみました。
そのうちもっと突っ込んだネタを書いてみようかと思います。

OSM

つかってみるよ

まずはプロジェクトをEmptyActivtyとか指定しててきとうに作ってね。

repositories {
        jcenter()
+       mavenCentral() //これを追加
    }
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'

+   compile 'org.osmdroid:osmdroid-android:5.6.2' // これを追加
}

これでosmdroidが使えるようになるよ!

AndroidManifestにいろいろpermission追加する

このへんを追加する
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

layoutにMapViewを追加するよ

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context="com.xsota.osmdroidtest.MainActivity">

  <org.osmdroid.views.MapView
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
</RelativeLayout>

MainAvtivityとかにTileSourceとかタッチでズームできるようにする設定を書くよ

MainActivity.java
public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants.setUserAgentValue(BuildConfig.APPLICATION_ID);

    MapView map = (MapView) findViewById(R.id.map);
    map.setTileSource(TileSourceFactory.MAPNIK);
    map.setBuiltInZoomControls(true);
    map.setMultiTouchControls(true);
  }
}

とりあえず地図を表示できるようになったよ

osmdroid

簡単にOpen Street Mapの地図を使ったアプリが作れるので、使ってみてはどうでしょうか。

「GoogleMapではアレができるのにosmdroidではできない!!!!」っていうネタがあったらチャレンジしてみたいので誰か教えて下さい。

それではさようなら。

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12