【问题标题】:Constructing Intersections from Google Maps API从 Google Maps API 构建交叉口
【发布时间】:2011-08-24 17:14:22
【问题描述】:

问题:

我正在尝试使用 Google Maps API V3 将纬度/经度反向地理编码到最近的街道交叉口。此外,就目前而言,这不必非常准确 - 因为我只是试图匿名地址而不是提供方向。

我已经看到地理编码结果数据包含“交叉点”的 Address Component Type,但这在返回结果中似乎完全不一致 - 并且通常不是空白。

我还对 SO 进行了一些研究,以寻找构建此禁止直接从 Google 获取它的最佳方法,而我所看到的最接近的是:How can I find the nearest intersection via the Google Maps API?,这并不能真正解决我的问题。鉴于此,我提出了自己的解决方案,并希望得到一些意见、优化、建设性的批评或其他选择。

我的初步解决方案:

在玩弄了 API 之后,我决定试一试以下算法(只是为了上下文,这是在控制台应用程序中用 C# 编写的):

  • 我获取地址并将其解析为纬度/经度。

  • 然后我从 坐标——按城市街区的顺序(根据您的情况调整距离 纬度)并获取点之间的步行方向。我最多对所有四个方向都这样做——所以第一个修改是保持纬度相同,但减去一些经度。然后下一个修改是保留纬度并添加一些经度等。

  • 得到方向后,我解析结果并检查开始 和结束地址。如果它们不同,我会提取街道名称 并将它们视为“交叉点”(即使有时这 导致平行的街道 - 再次只是想获得一个球场)。

  • 如果我没有找到两条不同的街道,我会扩大最终目的地的距离并重复该过程。

到目前为止,这运行得很好,但显然这是一个昂贵的过程,无论是在时间方面,还是在用完我分配的查询限制方面。另外,我检查了 API 服务条款,只要我包含他们的免责声明并在 Google 地图上显示结果,我认为我没问题。

我对社区的问题是:

  • 如何提高算法的效率?具体来说,在 我调用 API 的次数(实现代码不是 问题)

  • 是否有另一种方法可以使用 Google Maps API 完全做到这一点? 在 SO 问题referred to above 中,解决方案是循环 超过建筑数量。我不确定这到底是什么意思——所以任何 澄清会很棒。

  • 如上所述,我不认为这违反了服务条款——但我错了吗?

  • 是否有其他基于 Web 的 API 可以更好地满足我的需求? 也许是 Bing 或其他一些提供商?

非常感谢您的帮助。

更新: 我已经达到了当天的查询限制,因此我今天将无法针对 Google 测试任何建议,但我仍然愿意使用不同的 API。谢谢。

【问题讨论】:

    标签: api google-maps geocoding reverse-geocoding


    【解决方案1】:

    老问题,但由于原始发布者声明他们对 Google 以外的解决方案持开放态度,因此 Geonames 有一个适用于美国的 Web API。请参阅 GeoNames WebServices overviewhttp://www.geonames.org/maps/us-reverse-geocoder.html#findNearestIntersection

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 1970-01-01
      • 2018-01-04
      • 2013-01-26
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多