查找给定半径内的地址

时间:2013-09-09 02:22:35

标签: php google-maps google-places-api reverse-geocoding

我需要找到给定半径内的所有地址。我已经实现了以下功能。

Google Places API

这仅提供radius内的业务地址。它接受radius作为参数。 https://maps.googleapis.com/maps/api/place/textsearch/json?key=myAPIKey&location=6.914701,79.973085&radius=100&sensor=false&hl=en&query=*

Google反向地理编码

它只是转换给定的lat& lng到地址。这实际上并不符合我的要求。并且它不接受radius作为参数。 http://maps.googleapis.com/maps/api/geocode/json?latlng=6.914701,79.973085&sensor=false

有没有办法让所有地址都在给定的半径范围内。特别居住的地址。

2 个答案:

答案 0 :(得分:10)

您是否考虑过使用OpenStreetMap来完成任务?在Overpass API的帮助下,您可以查询给定bounding box内的所有数据。例如,this query将返回在您提到的区域内具有门牌号的所有地址。它仅在后台使用overpass turbo进行可视化和Overpass API,当然您也可以直接使用Overpass API将原始数据作为XML或JSON返回。

然而,由于您的区域在OSM中只有稀疏映射的门牌号码,因此还没有多少回报。其他更好的映射区域会更好用,但如果需要,可以尝试improve your area

有关如何修改给定查询的详细信息,请查看commonly used tagsOverpass API language guide

答案 1 :(得分:1)

你可以强行使用谷歌地图api,例如你可以使用一个点的间隔,例如在某个半径内每8°度一次,并评估来自谷歌地图地理编码API的json响应。但由于良好的隐私原因,Google地图地理编码API不支持与地方API相同的功能。请在此处阅读类似的问题:Map of all points below a certain time of travel?