小编dav*_*ter的帖子

从Google Maps API构建交叉点

问题:

我正在尝试使用Google Maps API V3将lat/long地理编码到最近的街道交叉口.此外,目前,这不一定非常准确 - 因为我只是试图匿名地址而不是提供方向.

我已经看到地理编码结果数据包含地址组件类型 "交叉点",但这在返回结果中似乎并不一致 - 并且通常不是空白.

我还做了一些关于SO的最佳方法,以便直接从Google获取它,并且我最接近的是:如何通过Google Maps API找到最近的交叉点?,这并没有真正解决我的问题.鉴于此,我提出了自己的解决方案,并希望完全有一些意见,优化,建设性批评或其他选择.

我的暂定解决方案:

在使用API​​之后,我决定给出以下算法(仅用于上下文,这是在控制台应用程序中用C#编写的):

  • 我拿一个地址并将其解析为lat/long.

  • 然后我在坐标中添加或减去一定数量的纬度或长度 - 按照城市街区的顺序(根据纬度调整的距离)并获得点之间的行走方向.我这样做是为了所有四个方向 - 所以第一个修改是保持纬度相同但减去一些经度.然后下一个修改是保持纬度并增加一些经度等.

  • 获得指示后,我解析结果并检查开始和结束地址.如果它们不同,我会将街道名称拉出来并将它们视为一个"交叉点"(尽管有时这会产生平行的街道 - 再次只是试图得到一个球场).

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

到目前为止,这种方法运行良好,但显然它在时间和使用我分配的查询限制方面都是一个昂贵的过程.此外,我检查了API服务条款,只要我在其中包含免责声明并在Google地图上显示结果,我认为我没问题.

我对社区的问题是:

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

  • 还有另外一种方法可以使用Google Maps API完成此操作吗?在上面提到的SO问题中,解决方案是循环建筑数量.我不确定究竟是什么意思 - 所以任何澄清都会很棒.

  • 如上所述,我不相信这违反了服务条款 - 但我错了吗?

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

非常感谢您的帮助.

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

api google-maps geocoding reverse-geocoding

6
推荐指数
1
解决办法
2433
查看次数

标签 统计

api ×1

geocoding ×1

google-maps ×1

reverse-geocoding ×1