开放街道地图与Android谷歌地图Api v2
问题描述:
是否有可能在Android上使用新的Google Maps V2 API的开放式街道地图提供程序?如果是的话你能提供一个例子或文档吗?我很快查看了文档,发现UrlTileProvider(),所以看起来很有可能。开放街道地图与Android谷歌地图Api v2
奖励:简单地使用MapFragment类以及仍受Google地图TOS约束的OSM切片?
答
您需要扩展UrlTileProvider类,所以你可以定义OSM平铺图的网址,并添加一个方块叠加这样的:
MyUrlTileProvider mTileProvider = new MyUrlTileProvider(256, 256, mUrl);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mTileProvider));
有了这样的定义的URL,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与离线模式,所以如果任何人得到一个快速的解决方案,请让我知道!
答
使用此方法时,请注意OSM瓷砖使用政策:http://wiki.openstreetmap.org/wiki/Tile_usage_policy
具体“大量使用(如分配使用的瓷砖从openstreetmap.org应用程序),未经允许严禁”
只是想知道为什么你想在谷歌地图上使用OSM? – tyczj
我只受Google地图服务条款的限制。我的应用程序使用私人数据,并且我无法承受$ 10,000 /年... – Patrick