2014-09-12 71 views
3

我正在Google地圖上做項目。我的要求是在線時保存Google地圖並以離線模式使用。在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_; 
    } 

在此先感謝。

回答

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 2014-09-12 12:57:46

+0

在我的應用程序中,我用地圖繪製了我需要的地方。我需要在離線狀態下使用繪製的地點。 – Arjun 2014-09-12 13:03:51

0

Google Maps Terms of Service

8.1定義。

(二)「內容」指通過服務(無論是 由谷歌或第三方授權創建的)提供,包括地圖和 地形數據,攝影圖像,路況數據,地方數據 任何內容(包括商業列表)或任何其他內容。

10.1.3對數據導出或複製的限制。

(b)無預取,緩存或存儲內容。你不能 預取,高速緩存,或儲存任何內容,但你可以存儲:...

...數量有限的內容提高性能的目的...

要回答您的問題:不,您可能無法保存Google地圖數據以供離線使用。

+0

但是這在IOS應用程序和谷歌地圖中也是可能的。那爲什麼我們不能? – Arjun 2014-09-12 13:34:24