上班已经两个月有余,通勤路线早已驾轻就熟。不过,随着暑假的结束,路上的车流明显增加,堵车也变得更加频繁。为了节省时间,我决定借助地图导航来选择耗时更少的路线,为此使用 iOS 快捷指令自动通勤导航。
日常通勤我习惯使用高德地图。经过查询,我找到了它提供的 URL Schemes,可以直接调用以启动导航。
iosamap://navi?sourceApplication=快捷指令&poiname=[A]&poiid=[B]&lat=[C]&lon=[D]&dev=0
<aside> 💡
其中,
A:目的地名称
B:目的地名称对应 POI ID
C:纬度
D:经度
</aside>
目的地名称可自定义,B、C 和 D 可通过在地图选定位置后分享链接得到。如:
<https://www.amap.com/?p=B021305SHC,36.661073,117.015873,趵突泉,济南市历下区趵突泉南路1号,370100>
<aside> 💡
B 即为「B021305SHC」
C 即为「36.661073」
D 即为「117.015873」
</aside>
由于此快捷指令仅用于工作日的通勤,非工作日驾车时显然不需要运行它。简单地通过周一至周五来判断工作日未免过于片面,毕竟在社会主义调休制度下,有时周六或周日也需要上班,或者节假日可能落在周一至周五。幸运的是,互联网上有相关的 API 接口可以提供精确的工作日和节假日判断。
我选择使用了这个 API 接口:
<https://date.appworlds.cn/work>
使用 POST 或 GET 请求方式可以成功返回:
{"code":200,"data":{"date":"2024-09-07","work":false},"msg":"ok"}
对work 加以匹配即可,true为工作日,false为节假日。
由于早上习惯去商场买早饭,上班的导航顺序通常是从家到商场,再到公司。因此,在梳理导航流程时,添加了一步位置判断,确保导航顺序正确无误。
flowchart
A[连接车载蓝牙] --> B{工作日}
B -->|是| C[获取当前位置]
B -->|否| G[结束]
C --> D{在商场}
D -->|是| E[导航去公司]
D -->|否| F[获取当前时间]
F --> H{早上七点}
H -->|是| I[导航去商场]
H -->|否| J{傍晚五点}
J -->|是| K[导航回家]
J -->|否| G[结束]
顺手添加了开启导航后自动播放音乐的指令。