17

是否可以在 Android 上使用带有新的 Google Maps V2 Api 的开放街道地图提供程序?如果是这样,你能提供一个例子或文档吗?我快速查看了文档并找到了 UrlTileProvider(),所以看起来这是可能的。

奖励:只是使用 MapFragment 类和 OSM 瓦片仍然受 Google Maps TOS 约束吗?

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 Tile 使用政策:http ://wiki.openstreetmap.org/wiki/Tile_usage_policy

特别是“未经事先许可,禁止大量使用(例如分发使用来自 openstreetmap.org 的图块的应用程序)”

于 2015-05-12T06:02:30.430 回答