【问题标题】:Create custom maps where specific streets get specific colour [closed]创建特定街道获得特定颜色的自定义地图[关闭]
【发布时间】:2025-12-15 16:05:01
【问题描述】:

我正在寻找一个(好的)解决方案来解决以下问题:

  • 为用户提供可搜索的地图
  • 搜索仅限于街道名称
  • 需要以特定方式对一组静态已知的街道名称进行着色(例如,某些街道名称为深红色、浅红色、深绿色等)

所以用户的体验是搜索例如他自己的街道,看看他的街道和邻近的街道是什么颜色。有点像典型的地图热点功能,但真正专注于街道层面。

这个想法的草图:

有谁知道解决这个问题的任何方法?将可动态搜索的地图与比方说 10k 条街道的预着色相结合?

我查看了 bing 地图、谷歌地图、here 地图、osm,但它们似乎都没有真正提供我正在寻找的东西。鉴于用户的查询,我不想查询特定街道的特定坐标,然后沿着这些坐标绘制折线 - 我想要一个“预烘焙”地图,它的工作原理就像一个可搜索的法线地图,但碰巧以特定的预定义方式为街道着色。

我对任何好的方法都很满意,无论多么复杂(离线渲染、动态着色……)。我环顾四周寻找可能的解决方案,但我发现的任何东西都集中在提供静态图像,或者使用例如为一条特定街道着色。路线 API。

感谢您的任何意见!

【问题讨论】:

标签: google-maps maps openstreetmap bing-maps here-api


【解决方案1】:

有几种方法可以做到这一点。您提到的大多数地图平台都将其路线图作为静态图像图块提供,而不会为您提供数据来做您想做的事情。

  • 如果您必须使用其中一个平台,则需要找到道路数据的替代来源,将其托管并将其拉入您的应用程序,并像任何其他形状一样对其进行样式设置。但有一个问题是,您找到的数据很可能不会 100% 与地图图像中的道路对齐,原因有多种,例如数据泛化、数据年份和用于道路线。您可以通过增加线条的宽度来隐藏这些缺陷。

  • 如果您没有被锁定在您提到的某个地图平台中,您可能需要考虑使用矢量瓦片作为基本地图的平台。 Azure Maps(我工作的产品)和 Mapbox 都提供了这个。矢量瓦片是一种较新的数据格式,它包含与地图瓦片相同的所有数据,但基本上是一个已压缩(压缩)的迷你 geojson 文件。这允许在客户端中访问原始地图数据。使用数据驱动样式,您可以使用每条数据必须指定如何设置磁贴中每个实体的样式的指标。但是,当您缩小时,矢量切片会优化自身并组合形状并将它们分类到图层中。对于每一个,某种类型的所有高速公路都可能是图块中的单个形状,您必须设置样式的唯一信息是源图层名称。当放大得更近并且名称出现在道路上时,该名称信息也将在矢量图块中可用。因此,根据您希望如何根据类/图层或名称设置道路样式,其工作的缩放级别会有所不同。我在这里有一个测试应用程序,可以提供对地图图块的见解:
    https://azuremapscodesamples.azurewebsites.net/Experimental/Inspect%20Features%20under%20the%20Mouse.html

    我在这里有一堆关于数据驱动样式的示例:https://azuremapscodesamples.azurewebsites.net/index.html 但是它们都通过 DataSource 对象使用 GeoJSON 数据。所有相同的样式也适用于 VectorTileSource,它只是不同的数据源。需要注意的一点是,您需要知道矢量切片中存在哪些属性,以便对其进行样式设置。

【讨论】: