在特定街道获得特定颜色的地方创建自定义地图

时间:2019-01-27 18:37:28

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

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

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

因此,用户的体验将是搜索例如他自己的街道,看看他和附近的街道是哪种颜色。有点像您的典型地图热点功能,但实际上专注于街道级别。

这个想法的草图:

sketch

有人知道实现这一目标的任何方法吗?将可动态搜索的地图与例如1万条街道的预着色结合起来?

我已经查看了必应地图,谷歌地图,此处地图,osm,但它们似乎都没有真正提供我想要的东西。我不想在给定用户查询的情况下查询特定街道的特定坐标,然后沿这些坐标绘制折线-我想要一个“预烘焙”地图,其功能类似于可搜索的法线地图,但是碰巧以特定的预定义方式为街道着色。

我对任何好的方法都感到满意,不管它多么复杂(脱机渲染,动态着色等等)。我四处寻找可能的解决方案,但是我发现的任何事情都集中在提供静态图像或使用例如仅对一条特定街道进行着色上。路线API。

感谢您的输入!

1 个答案:

答案 0 :(得分:1)

几种方法可以做到这一点。您提到的大多数地图平台都以静态图像图块的形式提供其路线图,这些图块不会为您提供执行此处所需的数据。

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

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

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