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

2019-12-19 12:37:35 +08:00
 tangzx
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 客户端,和状态管理
4017 次点击
所在节点    分享创造
5 条回复
yuanchao
2019-12-19 13:52:19 +08:00
expo 给我的感觉就是集成了常用的一些模块,到时候需要自定义模块会不会很难受~
jingcoco
2019-12-19 21:24:29 +08:00
请问一下楼主这个有离线导航功能吗。
huyinjie
2019-12-20 00:34:26 +08:00
感谢
littleboyzt
2019-12-20 16:47:42 +08:00
额,只有新西兰么
shanhegu
2019-12-25 14:12:37 +08:00
离线地图是什么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630473

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX