所以我想做的是以下几点:
- 拥有地图(例如 Google Maps 或 questMaps)。我需要使用哪个 API 并不重要。
- 在那张地图上,街道上有一个叠加层。所以说(例如)街道晚上有不好的闪电,它会被涂成红色。如果它有良好的闪电,它将有一个绿色的覆盖层。
- 基于叠加,地图创建了一条自定义路线(例如,用户只想在绿色/光线充足的街道上行走)。
我不知道如何做到这一点(尤其是第 3 步)。
所以我想做的是以下几点:
我不知道如何做到这一点(尤其是第 3 步)。
首先,您必须决定需要哪些数据。您如何将某些街道分类为有灯或无灯?如果街道的某些部分光线充足而有些地方没有灯怎么办?您需要知道您所在地区每个路灯的位置吗?如果灯烧坏了怎么办?
在弄清楚你需要什么数据之后,你需要构建你的数据集。如果这些数据已经存在,我会感到非常惊讶,因此您可能需要自己收集。要么去城里做笔记,要么众包项目,要么想出其他方法。
收集数据后,学习您希望使用的任何映射工具的绘图 API。它们都应该在其 API 中具有用于在现有地图上绘制彩色线(用于街道)或点(用于路灯)的功能。
最后,学习您选择的地图工具的导航 API。你是对的,这是一个艰难的步骤。我知道谷歌地图允许您在请求路线时指定某些航点;也许您的应用程序可以计算出光线充足的航路点并将它们提供给 Google 地图的路线服务,以影响它生成的路线。
祝你好运!
对于自定义路由,您需要阅读“图论”。这忽略了街道地图的地理,并将其视为由边连接的一组连接点(图论术语中的节点或顶点)。您可以为边缘分配权重 - 这些可以是长度、行程时间、1 和 0 等。任何东西。它们可以与地图上的位置无关。
因此,对于您的应用程序,您需要为未照明的街道分配较大的权重,为已照明的街道分配较小的权重,然后使用标准的最小权重算法来获取从一个节点到另一个节点的路线。