osmdroid-wms を使ってAndroid に国土国交省の地図画像を表示する


osmdroid を使って OpenStreetMap の地図を Android に表示する
の続きです

WMS

WMS( Web Map Service ) は、
地図画像を配信するための標準プロトコルです。
日本では、国交省や農研機構がWMSによる地図画像を提供している。

osmdroid-wms

osmdroid でWMS機能をサポートするライブラリ。
現在、ベータ版でうまくいかない場合もある。

国交省の地図画像

国土交通省は、国土の利用や交通機関を扱う行政機関です。
国土数値情報ダウンロードサービスや国土情報ウェブマッピングシステムなどの地理情報を提供している。

国交省 WMS機能説明
http://nlftp.mlit.go.jp/webmapc/help.html#N3

osmdroid-wm ライブラリを取り込む

app/build.gradle
dependencies {

    compile group: 'org.osmdroid', name: 'osmdroid-wms', version: '6.0.2' // 追加する

osmdroid-wms の WMSTileSource

WMS で提供されているタイルを使用するためのクラス

ベースURL、WMSバージョン、レイヤ名などを設定する。

WMS では、東西南北の4辺を指定して、地図の範囲を指定する。
WMSTileSource では、tile2boundingBox というメソッドにより、
osmdroid が必要とするタイルの範囲を自動的に計算するので、
ユーザーは意識する必要がない。

// 国交省の例
aBaseUrl = { "http://nrb-www.mlit.go.jp/webmapc/gis/webmap/wms?SERVICE=WMS&" };
version = "1.1.1" ;
// 市区町村界
layername = "N03-180101_200" ;

WMSTileSource tileSource = new WMSTileSource( aName, aBaseUrl, layername, version, srs, style, size );

MapTileProviderBasic tileProvider = new MapTileProviderBasic(getApplicationContext());

// ベース地図に重ねる
tileProvider.setTileSource(tileSource);
TilesOverlay tilesOverlay = new TilesOverlay(tileProvider, this.getBaseContext());
mMapView.getOverlays().add(tilesOverlay);

スクリーンショット

左はベースのOSM地図、右は市区町村界を重ねたもの。
 

github にサンプルコードを公開した
https://github.com/ohwada/Android_Samples/tree/master/Osmdroidwms1