我正在尝试使用以下算法构建 map :

  • 等待平移或缩放发生。
  • 查询视口(viewport)(范围)中可见的所有街道。
  • 用预定义的颜色为每条可见街道着色。

  • 例子:
    我想显示每条街道上的企业数量,或者每条街道上发生的犯罪数量。
    我有一个包含此类信息(街道名称、数据)的数据库,但每一行都没有位置数据。
    因此,每次 map 缩放或平移后,我无法通过地理边界矩形查询所有 map ,使用 Google 自己的数据库并通过街道名称查询它会更有效率。

    我知道如何注册平移和缩放事件。
    我知道如何 calculate the viewport coordinates
    我知道如何 color a single street

    如何获取视口(viewport)中可见的所有街道的列表?
    欢迎任何其他解决方案或架构。
    首选解决方案不会使用 Google DirectionsService 或 DirectionsRenderer,因为它们会减慢 map 速度。

    最佳答案

    我的理解是,您所要求的无法从 Google API 中获得。多边形内的反向地理编码不是他们提供的服务。其他网站上有一些帖子(例如 https://gis.stackexchange.com/questions/22816/how-to-reverse-geocode-without-google ),引用 gisgraphy.com 看起来像一个非常简洁的反向地理编码工具。

    然而,这仍然不能解决多边形问题中的所有街道。我认为您唯一的选择是获取数据( Open Street Maps )并自己编写代码。此外 - 如果你打算在大面积上这样做,我会采用我在这里推荐的网格方法:https://stackoverflow.com/a/18420564/1803682

    我会创建我的网格元素,并为每条街道计算它所属的所有网格并存储在数据库中。然后,当您搜索多边形时,您将计算多边形重叠的所有网格,然后可以测试每个正方形中的道路数据子集以确定重叠。

    几个月前,我对此进行了调查,并放弃了类似的要求,但仍然希望实现它。多边形工作中的大部分点/线都发生在我的应用程序中创建的数据上(即不是街道数据),现在这是我将包含的唯一数据。我想说的是 - 我希望有人给你一个更好的答案。

    更新:

    对于您要问的问题,我仍然相信您需要混合使用基于 OpenStreetMap 的自己的数据库和预先进行的某种网格分析。如果您有一些时间致力于该项目,那么处理这应该不会太糟糕。数据库将很大,所需的计算可能需要大量的一次性/前期处理时间。至于突出显示路线/道路/视口(viewport)中的任何内容,有很多方法可以使用 API 来实现这一点 - 我发现这里的示例很有用:polyline snap to road using google maps api v3

    同样有用:http://econym.org.uk/gmap/snap.htm

    请注意,如果使用方向 API 捕捉街道,街道的一种方式可能会带来一些麻烦,您可能必须注意这一点并纠正或反转起点/终点。

    关于google-maps - 在谷歌 map 视口(viewport)中显示所有街道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16495563/

    10-11 21:35