写在前面的话
哈哈,终于做了一次标题党!giser小伙伴们是不是也像我一样朝思慕想这个功能的出世呢?可惜Mapbox团队只是增加了缓存机制,对此仍未支持。虽说有对本地离散文件瓦片的支持,可面对瓦片数量时,你懂的!无奈之下只能深入源码自力更生,并分享予大家。
一、先从源码说起
经历了一层层剖析源码的各种曲折(Java与C++的双向交互),改造源码的各种尝试(希望对Mapbox现有接口最小化改造),编译调试源码时的焦急等待,效果出来时的那份激动(小雨中、夜色中黄河岸边溜达了好久),才有了这篇技术干货分享。此等经历有兴趣的小伙伴可以亲身体验体验哦,也欢迎留言交流分享源码心得。
最后寻找到的最佳改造方式是什么样的呢?那要从下面这段资源请求(外部设置的uri)的核心代码说起了。
if (AssetFileSource::acceptsURL(resource.url)) {
//Asset request--对应传入URI的协议头为"asset://"
tasks[req] = assetFileSource->request(resource, callback);
} else if (LocalFileSource::acceptsURL(resource.url)) {
//Local file request--对应传入URI的协议头为"file://"
tasks[req] = localFileSource-