Vraag Open Street Maps met Android Google Maps Api v2


Is het mogelijk om een ​​open straatkaartprovider te gebruiken met de nieuwe Google Maps V2 Api op Android? Zo ja, kunt u een voorbeeld of documentatie opgeven? Ik heb snel naar de documenten gekeken en gevonden UrlTileProvider () , dus het ziet er naar uit dat dit mogelijk is.

Bonus: gebruikt u gewoon de MapFragment-klasse met OSM-tegels die nog gebonden zijn door de TOS van Google Maps?


15
2017-12-04 02:58


oorsprong


antwoorden:


U moet de klasse UrlTileProvider uitbreiden, zodat u de URL voor OSM-kaarten met tegels kunt definiëren en een tegeloverlay als volgt kunt toevoegen:

MyUrlTileProvider mTileProvider = new MyUrlTileProvider(256, 256, mUrl);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mTileProvider));

Met de URL voor OSM zo gedefinieerd:

String mUrl = "http://a.tile.openstreetmap.org/{z}/{x}/{y}.png";

De MyUrlTileProvider-klasse:

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;
}
}

Ik probeer nu die betegelde kaarten van OSM met een offline-modus te krijgen, dus als iemand een snelle oplossing krijgt, laat het me dan weten!


22
2017-12-12 15:39



Let bij gebruik van deze methode op het OSM-tegelgebruiksbeleid: http://wiki.openstreetmap.org/wiki/Tile_usage_policy

Met name "Zwaar gebruik (bijvoorbeeld het distribueren van een app die tegels gebruikt van openstreetmap.org) is verboden zonder voorafgaande toestemming"


1
2018-05-12 06:02