使用Android Google Maps Api v2打开街道地图

时间:2012-12-04 02:58:31

标签: android google-maps openstreetmap google-maps-mobile google-maps-android-api-2

是否可以在Android上使用新的Google Maps V2 Api打开街道地图提供商?如果是这样,您能提供示例或文档吗?我快速查看了文档并找到了UrlTileProvider(),所以看起来这很可能。

奖励:只是使用MapFragment类,OSM图块仍然受Google Maps TOS约束?

2 个答案:

答案 0 :(得分:22)

您需要扩展UrlTileProvider类,以便您可以定义OSM平铺地图的URL并添加类似的平铺覆盖:

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

OSM的网址定义如下:

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获取离线模式的平铺地图,所以如果有人得到快速解决方案,请告诉我!

答案 1 :(得分:1)

使用此方法时,请注意OSM平铺使用政策:http://wiki.openstreetmap.org/wiki/Tile_usage_policy

具体而言#34;未经事先许可,禁止大量使用(例如分发使用openstreetmap.org中的图块的应用)"