保存谷歌地图以供离线使用

3

我正在进行一个谷歌地图的项目。我的要求是在线保存谷歌地图,以便离线使用。在 IOS 中,他们使用了 GMSTileURLConstructor。相同情况下,是否有可能保存地图。如果是,请给我提供任何想法或链接。

    -(void)ViewOfflineMap
    {
          GMSTileURLConstructor urls = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) {
               NSString *strMap=[NSString      stringWithFormat:@"http://mt0.google.com/vt/x=%ld&y=%ld&z=%ld",(long)x,(long)y,(long)zoom];
               return [NSURL URLWithString:strMap];
          };

    GMSURLTileLayer *layer=[GMSURLTileLayer tileLayerWithURLConstructor:urls];
    layer.zIndex=100;
    layer.map=mapView_;
    }

感谢提前帮助。
3个回答

2

我有一个解决方案。我们可以使用UrlTileProvider将地图保存为瓦片。它根据您屏幕上的缩放级别和覆盖区域的x和y轴来保存地图瓦片。

TileProvider tileProvider = new UrlTileProvider(256, 256) {
    @Override
    public URL getTileUrl(int x, int y, int zoom) {

        String s = String.format(
                "http://my.image.server/images/%d%d%d.png", zoom, x, y);

        if (!checkTileExists(x, y, zoom)) {
            return null;
        }

        try {
            return new URL(s);
        } catch (MalformedURLException e) {
            throw new AssertionError(e);
        }
    }

    private boolean checkTileExists(int x, int y, int zoom) {
        int minZoom = 12;
        int maxZoom = 16;

        if ((zoom < minZoom || zoom > maxZoom)) {
            return false;
        }

        return true;

    }
};

tileOverlay = map.addTileOverlay(new TileOverlayOptions()
        .tileProvider(tileProvider));

0

谷歌地图已经实现了这一点,您所看到的内容将被缓存。


2
这必须是一个注释。 - InnocentKiller
在我的应用程序中,我使用地图来标记我需要的地方。而且我需要在离线状态下使用这些标记的地点。 - Arjun

0

来自Google Maps服务条款

8.1 定义。

(b) "内容" 指通过服务提供的任何内容(无论是由Google还是其第三方许可方创建),包括地图和地形数据、摄影图像、交通数据、地点数据(包括商业列表)或任何其他内容。

10.1.3 数据导出或复制的限制。

(b) 不得预取、缓存或存储内容。您不得预取、缓存或存储任何内容,但您可以存储:……

……有限数量的内容,以提高性能为目的……

回答您的问题:不,您不能保存Google Maps数据以供离线使用。


但是在IOS应用程序和Google地图中是可能的。那么为什么我们不能呢? - Arjun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接