是否可以在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 ,因此,如果有人得到快速解决方案,请告诉我!