是否可以在Android上的新Google Maps V2 Api中使用开放式街道 map 提供商?如果可以,您可以提供示例或文档吗?我快速查看了文档,发现UrlTileProvider(),因此看来这是可能的。

好处:是否仅将MapFragment类与OSM切片一起使用仍受Google Maps TOS约束?

最佳答案

您需要扩展UrlTileProvider类,以便可以为OSM平铺 map 定义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获取这些平铺的 map ,因此,如果有人得到快速解决方案,请告诉我!

10-07 19:28
查看更多