osmdroid, Maps API v2, and fragments

后端 未结 2 1864
盖世英雄少女心
盖世英雄少女心 2021-02-06 11:06

Ok. You\'d think this would be relatively simple, but nope.

I am using Open street maps on my website, as the data is free to use, edit, and update - my project follows

2条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-06 11:37

    The Sample Code delivered with Google Maps Android API v2 contains the class com.example.mapdemo.TileOverlayDemoActivity. I little update to this class will show OpenStreetMap tiles within the new v2 framework. Cool! No need to use osmdroid or sherlock-fragments anymore. However... the tiles are not cached :(

    Anyway, all additions/updates to the TileOverlayDemoActivity class are shown below:

    private static final String OPEN_STREET_MAP_URL_FORMAT =
            "http://tile.openstreetmap.org/%d/%d/%d.png";
    
    private void setUpMap() {
        mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
        mMap.setMyLocationEnabled(true);
    
        TileProvider tileProvider = new UrlTileProvider(256, 256) {
            @Override
            public synchronized URL getTileUrl(int x, int y, int zoom) {
                String s = String.format(Locale.US, OPEN_STREET_MAP_URL_FORMAT, zoom, x, y);
                URL url = null;
                try {
                    url = new URL(s);
                } catch (MalformedURLException e) {
                    throw new AssertionError(e);
                }
                return url;
            }
        };
    
        mMap.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider));
    }
    

提交回复
热议问题