android 没有asset_Mapbox:Android端支持本地离线Mbtiles了

本文介绍了如何通过对Mapbox Android SDK源码的改造,实现支持使用`mbtiles://`协议头加载本地MBTiles文件,从而实现离线地图功能。通过详细解析源码和开发过程,展示了在不改变Mapbox接口的情况下,如何无缝地整合MBTiles资源,提供了一种无需网络即可加载本地瓦片数据的方法。
摘要由CSDN通过智能技术生成

写在前面的话

    哈哈,终于做了一次标题党!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-
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值