我正在谷歌地图上做一个项目。我的要求是在线时保存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_;
}
提前致谢。
答案 0 :(得分: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));
答案 1 :(得分:0)
谷歌地图已经完成了,您看到的内容将被缓存
答案 2 :(得分:0)
来自Google Maps Terms of Service:
8.1定义。
(b)“ 内容 ”指通过本服务提供的任何内容(是否 由Google或其第三方许可人创建),包括地图和 地形数据,摄影图像,交通数据,地点数据 (包括商家信息)或任何其他内容。
10.1.3数据导出或复制的限制。
(b) 内容的预取,缓存或存储 。你不能 预取,缓存或存储任何内容,但您可以存储:...
......为改善表现而限制的内容......
要回答您的问题:不,您可能无法保存Google地图数据以供离线使用。