【问题标题】:Save google map for offline use保存谷歌地图以供离线使用
【发布时间】:2014-09-12 12:52:58
【问题描述】:

我正在谷歌地图上做一个项目。我的要求是在线时保存谷歌地图并在离线模式下使用。在 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_;
    }

提前致谢。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    我有一个解决方案。我们可以使用 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));
    

    【讨论】:

      【解决方案2】:

      谷歌地图已经做到了,你看到的会被缓存

      【讨论】:

      • 这必须是评论,
      • 在我的应用程序中,我使用地图来绘制我需要的地方。我需要离线使用绘制的地方。
      【解决方案3】:

      来自Google Maps Terms of Service

      8.1 定义。

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

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

      (b) 不预取、缓存或存储内容。你不能 预取、缓存或存储任何内容,但您可以存储的内容除外:...

      ...为了提高性能而限制数量的内容...

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

      【讨论】:

      • 但这在IOS应用程序和谷歌地图中也是可能的。那为什么我们不能呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 2016-12-21
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多