Use google maps offline maps (cache) in Google Maps Android API

后端 未结 1 1217
-上瘾入骨i
-上瘾入骨i 2020-12-28 22:51

Google Maps offers for a few months the feature to download a certain geographic region for later offline use. I use Google Maps Android API in my App and I

1条回答
  •  被撕碎了的回忆
    2020-12-28 23:13

    You need to create your own TileProvider and access tiles locally. Check this documentation.

    Here are some related threads that may help you:

    • Using the android Google Maps API v2 as a viewer of offline tiles: is it possible?
    • Offline mode for android app using google maps api
    • TileProvider using local tiles

    Check this video tutorial about caching and this example from GitHub.

    You can also use osmdroid which is a replacement for Android's MapView class. It also includes a modular tile provider system with support for numerous online and offline tile sources and overlay support with built-in overlays for plotting icons, tracking location, and drawing shapes. Here is the tutorial.

    org.osmdroid.views.MapView mapView = (org.osmdroid.views.MapView) findViewById(R.id.map_view); //resolve the map view by id given in the layout
    mapView.setTileSource(new OnlineTileSourceBase("Google Maps", ResourceProxy.string.unknown, 1, 20, 256, ".png", "http://mt3.google.com/vt/v=w2.97") {   
        @Override
        public String getTileURLString(final MapTile aTile) {
            /*
             * GOOGLE MAPS URL looks like
             *  base url        const   x   y    zoom
             * http://mt3.google.com/vt/v=w2.97&x=74327&y=50500&z=17
             */
            return getBaseUrl() + "&x=" + aTile.getX() + "&y=" + aTile.getY() + "&z=" + aTile.getZoomLevel();
        }
    });
    mapView.setUseDataConnection(false); //this actually makes the controller use only offline tiles
    

    Hope this helps!

    0 讨论(0)
提交回复
热议问题