问题
Is it possible to use an open street map provider with the new Google Maps V2 Api on Android? If so can you provide an example, or documentation? I have looked quickly at the docs and found UrlTileProvider() , so it looks likely this is possible.
Bonus: Is simply using the MapFragment class with OSM tiles still bound by the Google Maps TOS?
回答1:
You need to extend the UrlTileProvider class so you can define the URL for OSM tiled maps and add a tile overlay like that :
MyUrlTileProvider mTileProvider = new MyUrlTileProvider(256, 256, mUrl);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mTileProvider));
With the url for OSM defined like that :
String mUrl = "http://a.tile.openstreetmap.org/{z}/{x}/{y}.png";
The MyUrlTileProvider class :
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;
}
}
I am now trying to get those tiled maps from OSM with an Offline Mode so if anyone get a quick solution, please let me know!
回答2:
When using this approach, please pay attention to the OSM Tile Usage Policy: http://wiki.openstreetmap.org/wiki/Tile_usage_policy
Specifically "Heavy use (e.g. distributing an app that uses tiles from openstreetmap.org) is forbidden without prior permission"
来源:https://stackoverflow.com/questions/13695393/open-street-maps-with-android-google-maps-api-v2