Swift谷歌地图-加载区域瓷砖



我正在使用Swift和谷歌地图,并在我的文档目录中保存了一些瓷砖,以便在zoom/lat/lng.png结构中覆盖(如file:///....documents/3/2/3.png)

let urls: GMSTileURLConstructor = {(x, y, zoom) in
let url = "(documentsUrl)(zoom)/(x)/(y).png"
return URL(string: url)
}
layer = GMSURLTileLayer(urlConstructor: urls)
...

该片段适用于在线图层,没有任何问题。但是当documentsUrl是我的本地目录时,我会收到

任务<1> 加载失败,出现错误错误Domain=NSURLErrorDomain Code=-1100"在上找不到请求的URL此服务器。"UserInfo={NSLocalizedDescription=请求的URL为在此服务器上找不到。,NSErrorFailingURLStringKey=文件:////文件/7/65/42.png

使用Swift+谷歌地图是否有机会获得离线互动程序?

非常感谢Karsti

只需使用自己的类并覆盖tileFor函数

class OfflineTileLayer: GMSSyncTileLayer {
override func tileFor(x: UInt, y: UInt, zoom: UInt) -> UIImage? {
let documentsUrl =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let reqPath = URL(string: "(documentsUrl)(zoom)/(x)/(y).png")!.path
print (reqPath)
if FileManager.default.fileExists(atPath: reqPath) {
print ("> IS ACTIVE!")
let url = NSURL(string: reqPath)
let data = NSData(contentsOf: url! as URL)
return UIImage(data: data! as Data)
}
return kGMSTileLayerNoTile
}
}

并使用从您的map init函数调用它

offlineLayer = OfflineTileLayer()
offlineLayer.map = yourGoogleMap

最新更新