android - 使用 Android Google Maps Api v2 打开街道 map

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

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

奖励:仅将 MapFragment 类与 OSM 图 block 一起使用是否仍受 Google map 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 ,所以如果有人有快速解决方案,请告诉我!

关于android - 使用 Android Google Maps Api v2 打开街道 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13695393/

相关文章:

android - 如何在 android sdk 图形布局中的选项卡之间切换或更改?

python - "No module named ' osmium._osmium '"尝试使用 PyOsmium 时出错

javascript - 如何自定义gInfoWindow

jquery - Google Maps API V3 fitbounds() 缩小但从不放大

openstreetmap - EPSG 的开放式街道 map 服务器 :4326

android - 使用 osmdroid 在 OpenStreet map 上制作动画标记

android - Android 版本 >4.0.3 的 Phonegap websocket 插件无法正常工作

java - 如果放入 hashmap 超过容量会怎样

Android-使用 html 数据从 textview 获取文本位置

android - 如何在谷歌地图 V2 Android 上移动标记