Карты Open Street с Android Google Maps Api v2

Можно ли использовать поставщика открытой карты улиц с новым Google Maps V2 Api на Android? Если да, то можете ли вы привести пример или документацию? Я быстро посмотрел на документы и нашел UrlTileProvider(), поэтому, похоже, это возможно.

Бонус: просто использует класс MapFragment с плитами OSM, которые все еще связаны с Google Maps TOS?

Ответы

Ответ 1

Вам нужно расширить класс UrlTileProvider, чтобы вы могли определить URL-адрес для картографированных карт 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 в автономном режиме, поэтому, если кто-нибудь получит быстрое решение, сообщите мне об этом!

Ответ 2

При использовании этого подхода, пожалуйста, обратите внимание на политику использования плитки OSM: http://wiki.openstreetmap.org/wiki/Tile_usage_policy

В частности, "Тяжелое использование (например, распространение приложения, использующего плитки с openstreetmap.org) запрещено без предварительного разрешения"