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 ライブラリを取り込む
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);
スクリーンショット
github にサンプルコードを公開した
https://github.com/ohwada/Android_Samples/tree/master/Osmdroidwms1