Open Street Maps with Android Google Maps Api v2
Q

2

17

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?

Quinlan answered 4/12, 2012 at 2:58 Comment(2)
Just curious as to why you want to use OSM over google maps?Redintegration
I'm just restricted by the Google Maps TOS. My application uses private data, and I can't afford $10,000 /year...Quinlan
C
25

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!

Correct answered 12/12, 2012 at 15:39 Comment(4)
Could you perhaps expand on this with a very basic implementation?Uganda
I got the sample up and running with OSM. Works great. This with an offline mode would be killer. Just need to find out about any licensing issues....Quinlan
@Patrick Presumably you could write an offline version by implementing TileProvider and providing your own cache to SD? It says here that you need to be online when you start the app though for v2. A shame: I'm not sure whether to try that or osmdroidPigmy
We use osmdroid API since our project start and it works well with online and offline data.Utilize
D
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"

Decalogue answered 12/5, 2015 at 6:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.