用 Expo 开发的一个离线地图的 App 上架了: Tracks NZ

App 用于查看新西兰所有环保局维护的户外步道、木屋还有露营地⛺️,欢迎来新西兰旅游的朋友们使用 🙂

– App Store: https://apps.apple.com/cn/app/tracks-nz/id1488245855
– Google Play: https://play.google.com/store/apps/details?id=in.micy.tracksnz
– 没办法用 Play 的安卓用户可以用 Expo 的 App 来查看: https://expo.io/@layerssss/tracksnz

Expo 其实就是最早的 create-react-native-app,与 create-react-app 想法相似,把工程的配置文件,编译配置等藏到依赖包里,源代码里的配置就相当简单,不会出现一大堆奇怪的因为配置不对无法编译的问题(特别是升级依赖库的时候),Expo 还包括了免费的在线构建服务,所以整个开发流程里连 XCode 和 Android Studio 都不一定要安装了。

这其实是我用 Expo 发布的第三个 App 了,不过这个 App 特殊之处在于要实现主要功能全部离线在野外没网络的环境下能用,所以就得有离线地图。由于是徒步之类的户外活动用,而且又要离线,所以第一时间考虑了 MapBox,后来发现 Expo 不 eject 没法用,而我选 Expo 的原因就是因为配置文件简单维护成本低,这样过一段时间不管了还能升级还能用,所以最后没用。

最终离线地图采用了 https://medium.com/@mellet/adding-offline-capabilities-for-mapview-in-expo-dd9c1b1ab732 这里提出的办法,基本就是自己计算需要下载的地图图块的列编然后自行实现下载的管理。地图依然用最基本的 Expo 自带的 react-native-community/react-native-maps,最终实现并没有一开始想象地那么复杂了,性能还不错,唯一的缺点可能就是地图占用尺寸由于是位图可能相比会大那么一些,不过这样自带一个好处就是地图源有更多其他的选择了,我用的是这边“土地局” LINZ 免费发布的户外爱好者常用的地图“TOPO250/50”。

性能也是个问题,由于数据量稍大(包括全国的步道数据)又都得在客户端里离线处理,怎么筛选出当前区域的数据也得谨慎处理,我发现瓶颈和遇到的一些奇怪的问题基本都是在 Android 上。所以最终 Android 版本等到 iOS 发了好几天后才发布。

另外用到的几个主要的都很推荐的第三方库:

– react-native-paper: UI 样式库
– react-navigation: 导航菜单和界面切换
– https://www.apollographql.com/: GraphQL 客户端,和状态管理

相关文章

3 thoughts on “用 Expo 开发的一个离线地图的 App 上架了: Tracks NZ

发表评论

电子邮件地址不会被公开。 必填项已用*标注