17

Androidの新しいGoogleMapsV2 Apiでオープンストリートマッププロバイダーを使用することは可能ですか?もしそうなら、例やドキュメントを提供できますか?私はドキュメントをすばやく調べて、UrlTileProvider()を見つけたので、これが可能である可能性が高いようです。

ボーナス:単にGoogle Maps TOSによってバインドされたOSMタイルでMapFragmentクラスを使用していますか?

4

2 に答える 2

25

UrlTileProviderクラスを拡張して、OSMタイルマップのURLを定義し、次のようなタイルオーバーレイを追加できるようにする必要があります。

MyUrlTileProvider mTileProvider = new MyUrlTileProvider(256, 256, mUrl);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mTileProvider));

OSMのURLは次のように定義されています:

String mUrl = "http://a.tile.openstreetmap.org/{z}/{x}/{y}.png";

MyUrlTileProviderクラス:

public class MyUrlTileProvider extends UrlTileProvider {

private String baseUrl;

public MyUrlTileProvider(int width, int height, String url) {
    super(width, height);
    this.baseUrl = url;
}

@Override
public URL getTileUrl(int x, int y, int zoom) {
    try {
        return new URL(baseUrl.replace("{z}", ""+zoom).replace("{x}",""+x).replace("{y}",""+y));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    return null;
}
}

私は現在、オフラインモードでOSMからこれらのタイルマップを取得しようとしています。誰かが迅速な解決策を入手した場合は、私に知らせてください!

于 2012-12-12T15:39:40.580 に答える
2

このアプローチを使用する場合は、OSMタイル使用ポリシーに注意してください:http ://wiki.openstreetmap.org/wiki/Tile_usage_policy

具体的には、「事前の許可なしに大量に使用すること(たとえば、openstreetmap.orgからタイルを使用するアプリを配布すること)は禁止されています」

于 2015-05-12T06:02:30.430 に答える