使用高德api的tileoverlay层显示谷歌地图

    private void init() {
        if (aMap == null) {
            aMap = mapView.getMap();
            setUpMap();
            TileOverlay tileOverlay;
            final String url = "http://mt0.google.cn/vt/lyrs=y@198&hl=zh-CN&gl=cn&src=app&x=%d&y=%d&z=%d&s=";
            TileProvider tileProvider = new UrlTileProvider(256, 256) {
                public URL getTileUrl(int x, int y, int zoom) {
                    try {
                        return new URL(String.format(url, x, y, zoom));
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }
                    return null;
                }
            };
            if (tileProvider != null) {
                tileOverlay = aMap.addTileOverlay(new TileOverlayOptions()
                        .tileProvider(tileProvider)
                        .diskCacheEnabled(true)
                        .diskCacheDir("/storage/emulated/0/amap/cache")
                        .diskCacheSize(100000)
                        .memoryCacheEnabled(true)
                        .memCacheSize(100000))
                        ;
            }
        }
    }

其中url = http://mt0.google.cn/vt/lyrs=y@198&hl=zh-CN&gl=cn&src=app&x=%d&y=%d&z=%d&s=;

mt0可以取值mt3

lyrs=y为混合地图,s为卫星地图,m为普通地图


优点:

1、可以显示目前被墙的谷歌地图,国内无法使用google api

2、准确度看无定位误差,可使用高德定位SDK,可能和谷歌在中国使用的是高德数据源有关


缺点:

1、底图为高德地图,上层为谷歌地图,同时加载两种地图,浪费系统资源和流量

2、diskcache无效,在sd卡中未找到瓦片地图的缓存,memorycache有效,可以迅速加载内存中的瓦片





你可能感兴趣的:(android)