我的理解是,您所问的问题无法通过 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 的自己的数据库和预先进行的某种网格分析。如果您有时间致力于该项目,那么这应该不会太糟糕而无法处理。数据库将很大,所需的计算可能需要大量的一次性/前期处理时间。至于在视口中突出显示路线/道路/任何内容,有很多方法可以使用 API 来实现这一点 - 我发现这里的示例很有用:polyline snap to road using google maps api v3
也很有用:http ://econym.org.uk/gmap/snap.htm
请注意,如果使用方向 api 捕捉到街道,街道可能会带来一些麻烦,您可能必须注意这一点并纠正或反转起点/终点。