V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tangzx
V2EX  ›  分享创造

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

  •  
  •   tangzx ·
    layerssss · 2019-12-19 12:37:35 +08:00 · 3790 次点击
    这是一个创建于 1561 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 客户端,和状态管理
    5 条回复    2019-12-25 14:12:37 +08:00
    yuanchao
        1
    yuanchao  
       2019-12-19 13:52:19 +08:00
    expo 给我的感觉就是集成了常用的一些模块,到时候需要自定义模块会不会很难受~
    jingcoco
        2
    jingcoco  
       2019-12-19 21:24:29 +08:00
    请问一下楼主这个有离线导航功能吗。
    huyinjie
        3
    huyinjie  
       2019-12-20 00:34:26 +08:00 via iPhone
    感谢
    littleboyzt
        4
    littleboyzt  
       2019-12-20 16:47:42 +08:00
    额,只有新西兰么
    shanhegu
        5
    shanhegu  
       2019-12-25 14:12:37 +08:00
    离线地图是什么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   952 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:48 · PVG 05:48 · LAX 14:48 · JFK 17:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.